Nginx 在 Windows 上搭建 RTMP 直播服务:从安装到推流播放,一篇讲明白
目标关键词:nginx windows rtmp
如果你想在 Windows 电脑上搭一个自己的 RTMP 推流服务器,用来做局域网直播、OBS 推流测试、视频采集转发,Nginx + RTMP 模块是一个非常经典、成本很低的方案。
它的优点很明显:免费、轻量、部署快、适合入门和测试。如果只是想在 Windows 环境里先把直播链路跑通,完全够用。
下面这篇文章会按“问题分析 → 解决方案 → 注意事项”的思路来讲,尽量写得直白一点,方便新手一步一步照着做。
一、先搞清楚:Nginx RTMP 是干什么的?
1.1 什么是 RTMP
RTMP 是一种常见的直播推流协议,很多直播软件,比如 OBS、XSplit,都能直接往 RTMP 地址推流。
你可以把它理解成:
- OBS:负责采集画面、声音;
- Nginx RTMP 服务:负责接收推流;
- 播放器 / 网页 / 其他设备:负责拉流观看。
1.2 为什么要在 Windows 上搭建
很多人会在这些场景用到:
- 在本地电脑上测试直播推流是否正常;
- 搭一个局域网直播服务器;
- 给开发测试用的网页直播;
- 做采集卡输入后的转发;
- 临时演示、培训、内网观看。
1.3 这个方案适合谁
适合以下人群:
- 新手:想快速搭个直播测试环境;
- 进阶用户:想在 Windows 上验证 RTMP 推流;
- 开发人员 / 运维人员:需要一个轻量直播服务做联调。
如果你是生产环境长期使用,通常更推荐 Linux + Nginx RTMP,稳定性和可维护性会更好;但如果你当前就是想在 Windows 上直接跑起来,这套方法最实用。
二、Windows 上搭建 Nginx RTMP 的核心思路
2.1 先说结论
Windows 版 Nginx 本身不自带 RTMP 功能,你需要下载一个已经编译好 RTMP 模块的 Windows 版本,或者自己编译带 RTMP 的版本。
对大多数人来说,最省事的方法就是:
- 下载一个支持 RTMP 的 Windows Nginx 版本;
- 配置
nginx.conf; - 启动 Nginx;
- 用 OBS 推流;
- 用播放器测试拉流。
三、准备工作:你需要哪些东西
3.1 必备软件
你需要准备这几样:
- Nginx for Windows(带 RTMP 模块版本)
- OBS Studio(推流工具)
- VLC 播放器 或支持 RTMP 的播放工具
- 一个文本编辑器,比如 记事本++、VS Code
3.2 建议准备
如果你后面要做局域网访问,还建议准备:
- Windows 防火墙放行规则;
- 路由器 / 交换机的局域网连通环境;
- 一台手机或另一台电脑用于测试拉流。
四、下载支持 RTMP 的 Nginx Windows 版本
4.1 为什么要特别注意版本
普通 Nginx Windows 包通常没有 RTMP 模块,你下载后即使启动成功,也不能直接做 RTMP 服务。
所以你要找的是:
- Nginx for Windows + nginx-rtmp-module
- 或者已经集成好的发行版本
4.2 选择建议
下载时注意这些点:
- 架构尽量选 64 位;
- 版本别太老;
- 包里最好能直接看到
nginx.exe和conf文件夹; - 如果是压缩包,解压路径尽量简单,比如:
C:\nginx
4.3 推荐目录结构
建议你放成这样:
C:\nginx\
├─ conf\
│ └─ nginx.conf
├─ html\
├─ logs\
└─ nginx.exe
这样后续配置和启动都比较方便。
五、配置 Nginx RTMP
5.1 打开配置文件
找到:
C:\nginx\conf\nginx.conf
用记事本或 VS Code 打开。
5.2 一个可直接用的基础配置
下面这份配置适合入门测试,能实现基本的 RTMP 推流和 HTTP 页面访问。
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
5.3 这份配置是什么意思
简单解释一下:
-
listen 1935;
RTMP 默认端口,OBS 往这里推流。 -
application live {}
定义一个名叫live的直播应用路径。 -
live on;
允许直播流接入。 -
record off;
关闭录制,避免磁盘占用。 -
http {}
让 Nginx 同时还能提供网页服务。
六、启动 Nginx
6.1 进入目录
打开命令提示符 CMD,输入:
cd /d C:\nginx
6.2 启动 Nginx
执行:
start nginx
如果没有报错,说明服务已经起来了。
6.3 检查是否运行成功
你可以用下面几种方法判断:
方法一:看进程
按 Ctrl + Shift + Esc 打开任务管理器,查看是否有 nginx.exe 进程。
方法二:浏览器访问
打开浏览器输入:
http://127.0.0.1
如果能看到网页或默认页面,说明 HTTP 服务正常。
七、用 OBS 推流到 Nginx RTMP
7.1 打开 OBS
在 OBS 里找到:
- 设置
- 直播
- 服务类型
7.2 配置推流地址
选择:
- 服务:自定义
- 服务器:
rtmp://127.0.0.1/live
- 串流密钥:
test
最终推流地址通常类似这样:
rtmp://127.0.0.1/live/test
7.3 开始推流
OBS 里点击“开始串流”,如果配置正常,Nginx 就会接收到这路流。
八、如何播放这个 RTMP 流
8.1 用 VLC 播放
打开 VLC,选择:
- 媒体
- 打开网络串流
输入地址:
rtmp://127.0.0.1/live/test
如果推流成功,VLC 就能播放。
8.2 在局域网内播放
如果你想让别的电脑或手机也能看,把 127.0.0.1 换成你的 Windows 电脑局域网 IP。
比如你的电脑 IP 是:
192.168.1.100
那么别的设备访问地址就是:
rtmp://192.168.1.100/live/test
九、局域网访问时要放行防火墙
9.1 常见问题
很多人本机能推流,但局域网其他设备看不了,原因通常不是 Nginx 配置错了,而是:
- Windows 防火墙拦了端口;
- 杀毒软件拦了程序;
- 路由器网络不通;
- 访问地址写错了。
9.2 放行端口
至少要放行这两个端口:
- 1935:RTMP 推流端口
- 80:HTTP 页面端口
9.3 Windows 防火墙操作
操作步骤:
- 打开 Windows 安全中心;
- 进入 防火墙和网络保护;
- 点击 高级设置;
- 新建 入站规则;
- 选择 端口;
- 输入
1935,80; - 允许连接;
- 勾选对应网络配置;
- 完成。
如果你怕麻烦,也可以临时关闭防火墙测试一下,确认是防火墙问题后,再重新放行端口。
十、常见问题排查
10.1 启动 Nginx 没反应
常见原因:
nginx.conf语法错误;- 端口被占用;
- 目录路径不对;
- 下载的版本不带 RTMP 模块。
排查方法
在命令行运行:
nginx -t
这个命令会检查配置文件语法。
如果有错误,会直接提示你是第几行哪一段出问题。
10.2 提示端口被占用
如果 80 或 1935 被占用,先查占用进程。
查 1935 端口
netstat -ano | findstr 1935
查 80 端口
netstat -ano | findstr :80
查到 PID 后,再执行:
tasklist | findstr 进程号
如果发现是别的软件占了端口,你可以:
- 关掉占用程序;
- 或者改 Nginx 监听端口。
比如把 RTMP 改成:
listen 1936;
然后 OBS 推流地址也改成:
rtmp://127.0.0.1:1936/live/test
10.3 OBS 推流成功,但播放器黑屏
这个问题很常见,通常和以下因素有关:
- 编码格式不兼容;
- 视频帧率太高;
- 码率设置不合理;
- 推流其实没真正成功。
建议设置
OBS 里建议先用这些参数测试:
- 编码器:x264 或硬件编码都可以
- 分辨率:1280×720
- 帧率:30 FPS
- 码率:2000~4000 kbps
- 关键帧间隔:2 秒
先把基础链路跑通,再慢慢调高画质。
10.4 局域网能推,手机看不了
可能原因:
- 手机和电脑不在同一个网段;
- 路由器开启了 AP 隔离;
- 防火墙没放行;
- 手机播放器不支持 RTMP。
解决办法
- 确认手机和电脑连的是同一个 Wi-Fi;
- 确认电脑 IP;
- 关闭 AP 隔离;
- 换 VLC、MX Player 等支持 RTMP 的播放器测试;
- 检查防火墙规则。
十一、进阶玩法:让 Nginx RTMP 更好用
11.1 增加直播状态页面
你可以配置一个状态页,查看当前是否有流在推。
示例:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
application stat {
live on;
allow publish 127.0.0.1;
deny publish all;
}
}
}
更常见的做法是启用 RTMP 状态统计页,方便查看直播连接情况。
如果你是做调试或运维,这个功能很实用。
11.2 录制直播流
如果你想把推流内容自动保存成本地文件,可以打开录制功能。
示例:
application live {
live on;
record all;
record_path C:/nginx/record;
record_unique on;
}
注意:
- 路径最好提前创建好;
- Windows 路径建议用正斜杠;
- 录制会占用磁盘,记得留空间。
11.3 配合网页播放
如果你想让网页直接播放,RTMP 本身不适合现代浏览器直接播放,一般会进一步转成:
- HLS
- FLV
- WebRTC
其中:
- HLS:兼容性好,但延迟更高;
- FLV:常用于低延迟网页播放;
- WebRTC:延迟最低,但搭建更复杂。
如果你只是 Windows 上测试 RTMP,先不用急着上这些方案。
十二、实际使用建议
12.1 新手最稳的搭法
如果你是第一次接触,建议按这个顺序来:
- 先在本机搭 Nginx RTMP;
- OBS 推流到
127.0.0.1; - VLC 本机拉流测试;
- 再开放局域网;
- 最后再考虑网页播放或录制。
这样排错最简单。
12.2 最容易踩的坑
这几个坑特别常见:
- Nginx 版本不带 RTMP 模块;
- 配置文件多了一个分号或少了一个括号;
- 80 端口被 IIS、Apache、宝塔之类占用;
- 防火墙没放行;
- OBS 推流地址写错;
- 播放器不支持 RTMP;
- 局域网 IP 写成了 127.0.0.1。
十三、推荐的排查顺序
如果你搭建后不通,建议按这个顺序查:
第一步:确认 Nginx 能启动
nginx -t
第二步:确认端口没冲突
netstat -ano | findstr 1935
netstat -ano | findstr :80
第三步:确认 OBS 地址正确
rtmp://你的IP/live/test
第四步:确认播放器地址一致
rtmp://你的IP/live/test
第五步:检查防火墙
放行 1935 和 80。
第六步:确认网络互通
电脑和手机是否在同一个局域网。
十四、一个可以直接照抄的最小可用方案
如果你不想折腾太多,直接按这个做:
14.1 nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
14.2 启动命令
cd /d C:\nginx
start nginx
14.3 OBS 推流地址
rtmp://127.0.0.1/live/test
14.4 VLC 播放地址
rtmp://127.0.0.1/live/test
十五、总结
在 Windows 上搭建 nginx windows rtmp 服务,核心就三件事:
- 拿到带 RTMP 模块的 Nginx 版本;
- 正确配置
nginx.conf; - 用 OBS 推流、用 VLC 拉流验证。
这套方案特别适合:
- 直播测试;
- 局域网观看;
- 内网转发;
- 学习 RTMP 工作流程。
如果后续你想做更完整的直播系统,可以继续往 HLS、FLV、WebRTC、鉴权、防盗链、录像归档 这些方向扩展。
但就“先把 Nginx RTMP 在 Windows 上跑起来”这个目标来说,上面这套流程已经足够实用。

还没有评论,来说两句吧...