nginx windows rtmp

老刘

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 的版本。

对大多数人来说,最省事的方法就是:

  1. 下载一个支持 RTMP 的 Windows Nginx 版本;
  2. 配置 nginx.conf
  3. 启动 Nginx;
  4. 用 OBS 推流;
  5. 用播放器测试拉流。

三、准备工作:你需要哪些东西

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.execonf 文件夹;
  • 如果是压缩包,解压路径尽量简单,比如: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 防火墙操作

操作步骤:

  1. 打开 Windows 安全中心
  2. 进入 防火墙和网络保护
  3. 点击 高级设置
  4. 新建 入站规则
  5. 选择 端口
  6. 输入 1935,80
  7. 允许连接;
  8. 勾选对应网络配置;
  9. 完成。

如果你怕麻烦,也可以临时关闭防火墙测试一下,确认是防火墙问题后,再重新放行端口。


十、常见问题排查

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。

解决办法

  1. 确认手机和电脑连的是同一个 Wi-Fi;
  2. 确认电脑 IP;
  3. 关闭 AP 隔离;
  4. 换 VLC、MX Player 等支持 RTMP 的播放器测试;
  5. 检查防火墙规则。

十一、进阶玩法:让 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 新手最稳的搭法

如果你是第一次接触,建议按这个顺序来:

  1. 先在本机搭 Nginx RTMP;
  2. OBS 推流到 127.0.0.1
  3. VLC 本机拉流测试;
  4. 再开放局域网;
  5. 最后再考虑网页播放或录制。

这样排错最简单。

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

第五步:检查防火墙

放行 193580

第六步:确认网络互通

电脑和手机是否在同一个局域网。


十四、一个可以直接照抄的最小可用方案

如果你不想折腾太多,直接按这个做:

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 服务,核心就三件事:

  1. 拿到带 RTMP 模块的 Nginx 版本
  2. 正确配置 nginx.conf
  3. 用 OBS 推流、用 VLC 拉流验证

这套方案特别适合:

  • 直播测试;
  • 局域网观看;
  • 内网转发;
  • 学习 RTMP 工作流程。

如果后续你想做更完整的直播系统,可以继续往 HLS、FLV、WebRTC、鉴权、防盗链、录像归档 这些方向扩展。
但就“先把 Nginx RTMP 在 Windows 上跑起来”这个目标来说,上面这套流程已经足够实用。

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,3人围观)

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

目录[+]