别再折腾OBS了!用Node.js+FFmpeg+node-media-server,5分钟搞定Windows本地直播推流服务器

📅 发布时间:2026/7/12 9:07:15 👁️ 浏览次数:
别再折腾OBS了!用Node.js+FFmpeg+node-media-server,5分钟搞定Windows本地直播推流服务器
5分钟极速搭建Windows本地直播推流系统Node.jsFFmpeg实战指南每次打开OBS都要调整一堆参数才能开始直播作为技术爱好者我们完全可以用代码实现更轻量的解决方案。今天要介绍的这套组合拳——Node.jsFFmpegnode-media-server能让你在Windows环境下快速搭建专属推流服务器特别适合需要频繁演示或临时分享屏幕内容的开发者。1. 为什么选择技术栈替代OBSOBS虽然功能强大但启动慢、配置复杂。相比之下我们的方案有三大优势启动速度快无需GUI加载命令行直接推流资源占用低内存消耗仅为OBS的1/3左右可编程性强所有参数可通过代码动态调整实测对比数据指标OBS Studio本方案内存占用~300MB~100MB启动时间8-12秒2-3秒推流延迟1-2秒0.5-1秒2. 环境准备与一键安装2.1 必备组件安装确保已安装Node.js 16版本然后执行# 全局安装关键组件 npm install -g node-media-server ffmpeg-static提示ffmpeg-static会自动下载预编译的Windows版FFmpeg避免手动配置环境变量2.2 基础配置文件创建stream-server.js写入以下核心配置const { NodeMediaServer } require(node-media-server); const config { rtmp: { port: 1935, chunk_size: 60000, gop_cache: true }, http: { port: 8000, allow_origin: * } }; const nms new NodeMediaServer(config); nms.run();启动服务node stream-server.js3. 实战推流方案3.1 屏幕捕捉推流使用FFmpeg捕获屏幕并推流ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -preset ultrafast -tune zerolatency -f flv rtmp://localhost:1935/live/screen关键参数说明-f gdigrabWindows屏幕捕获设备-preset ultrafast最低延迟编码预设-tune zerolatency零延迟优化3.2 摄像头推流针对USB摄像头ffmpeg -f dshow -i video摄像头名称 -vf formatyuv420p -c:v libx264 -preset ultrafast -f flv rtmp://localhost:1935/live/camera获取可用摄像头列表ffmpeg -list_devices true -f dshow -i dummy3.3 视频文件直播循环播放本地视频ffmpeg -re -stream_loop -1 -i input.mp4 -c copy -f flv rtmp://localhost:1935/live/video4. 高级功能扩展4.1 多平台同步推流修改配置实现中继转发// 在config中添加 relay: { tasks: [ { app: live, mode: push, edge: rtmp://live.twitch.tv/app/YOUR_STREAM_KEY } ] }4.2 低延迟优化配置调整关键参数减少延迟http: { mediaroot: ./media, webroot: ./www, dash: true, dashFlags: [fdash:window_size3:extra_window_size5] }, trans: { ffmpeg: ffmpeg.exe, tasks: [ { app: live, hls: true, hlsFlags: [hls_time2:hls_list_size3] } ] }4.3 安全防护设置添加基础认证auth: { play: true, publish: true, secret: YOUR_SECRET_KEY }5. 常见问题排查当视频流无法播放时按以下步骤检查检查端口占用netstat -ano | findstr 1935验证FFmpeg推流状态确保控制台没有报错检查CPU占用是否正常测试拉流地址RTMP:rtmp://localhost:1935/live/streamHTTP-FLV:http://localhost:8000/live/stream.flv查看实时日志nms.on(prePublish, (id, StreamPath, args) { console.log(Stream started:, StreamPath); });这套方案在我最近的远程教学项目中表现优异学生端延迟稳定在800ms以内。特别是结合自动化脚本后只需双击就能启动全套直播服务彻底告别了OBS的繁琐配置。