尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

从 0 到 1 跑通 nginx-rtmp 直播:三步部署不踩坑的完整指南

从 0 到 1 跑通 nginx-rtmp 直播:三步部署不踩坑的完整指南 从 0 到 1 跑通 nginx-rtmp 直播三步部署不踩坑的完整指南【免费下载链接】nginx-rtmp-moduleNGINX-based Media Streaming Server项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-modulenginx-rtmp 直播是视频场景里最常见的需求之一。这篇文章带你把 RTMP 模块编译进 Nginx、配好推流端口、再用 FFmpeg 推一路流验证全程大约二十分钟。读完你能在自己机器上完成一次真实的推流和拉流。开跑之前先确认这几件事Linux 环境已安装 C 编译器gcc和 make 构建工具一份 nginx 源码——模块是作为 add-on 编进 nginx 的不能单独运行nginx 1.3.14 ~ 1.5.0 版本编译时还需带上--with-http_ssl_module想动手测推流的话再装一个 FFmpeg一行自检两个命令都有版本号输出就可以开工cc --version make --version三步完成最小可用安装Step 1拉下模块源码克隆模块仓库放到一个路径稳定的目录里git clone https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module成功标志目录里能看到config构建入口和test/nginx.conf示例配置。Step 2进入 nginx 源码目录挂载模块关键是--add-module指向 Step 1 克隆出来的目录./configure --add-module/path/to/nginx-rtmp-module成功标志configure 无报错结尾输出Object .../objs一类的构建路径信息。Step 3编译并安装make make install成功标志nginx -V 21 | grep rtmp能打印出 rtmp 模块的路径说明模块真的编进去了。配置解读——只动你需要的行下面这份最小配置参考了 test/nginx.conf注释解释每一行worker_processes 1; events { worker_connections 1024; # 每个 worker 进程的最大连接数 } rtmp { # RTMP 是顶层 block与 http 平级 server { listen 1935; # RTMP 推拉流端口 application myapp { # 应用名须与推流 URL 的 app 段一致 live on; # 开启直播转发 } } } http { server { listen 8080; # 统计页面用的 HTTP 端口 location /stat { rtmp_stat all; # 以 XML 输出在线流统计 rtmp_stat_stylesheet stat.xsl; # 挂样式浏览器里可读 } } }这 3 个参数最常被改错错误写法配置里叫application mytv推流却用rtmp://host/myapp/x→后果握手阶段直接被拒 →正确写法application 名与推流 URL 第二段完全一致。错误写法把listen 1935改成 1936 后FFmpeg 仍推 1935 →后果连接超时、无报错日志 →正确写法端口改动与推流命令保持同步。错误写法改完配置直接重启 →后果语法错误时新配置不生效旧进程继续跑 →正确写法先校验再重载。改完配置先做语法校验通过后再重载nginx -t nginx -s reload 想同时输出 HLS 分片给 application 加三行即可hls on; hls_path /tmp/hls; hls_fragment 10s;再用 http block 把该目录以m3u8/ts两种 MIME 类型对外提供。启动后怎么验证真的跑通了先推一路流用 FFmpeg 内置测试源不依赖本地视频文件ffmpeg -re -stream_loop -1 -f lavfi -i testsrc -c:v libx264 -preset ultrafast -f flv rtmp://127.0.0.1:1935/myapp/mystream然后从三个角度确认统计页curl -s http://127.0.0.1:8080/stat | head看到stream节点里出现mystream说明推流与转发都接上了。错误日志grep -m5 publish logs/error.log出现publish ... myapp/mystream表示推流会话已被接受。播放播放器直接拉rtmp://127.0.0.1:1935/myapp/mystream或访问http://127.0.0.1:8080/的测试页画面出来即跑通。⚠️ 若要走 HLS 播放推流内容需是 H264/AAC否则 m3u8 会缺码流或播放黑屏。常见问题与下一步Q推流报 Connection refused先看端口有没有在监听ss -lntp | grep 1935。没监听通常是 nginx 没启动或配置里没生效rtmpblock在监听却被防火墙拦则放行 1935 端口。Qnginx -t报 unknown directive rtmp模块没编进去。用nginx -V确认 configure 参数里没有--add-module.../nginx-rtmp-module有则重新编译安装。QHLS 分片长度怎么调改hls_fragment如hls_fragment 10s;并重载配置即可分片目录记得用 tmpfs 以获得更好的写入性能。更多指令细节可参考仓库内的 README.md 与 stat.xsl 所在根目录的测试样例深入问题可到官方文档和社区讨论组搜索 nginx-rtmp 相关讨论。【免费下载链接】nginx-rtmp-moduleNGINX-based Media Streaming Server项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表