news 2026/8/21 21:29:04

nginx-rtmp-module:从编译到推流成功,一篇就够

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nginx-rtmp-module:从编译到推流成功,一篇就够

nginx-rtmp-module:从编译到推流成功,一篇就够

【免费下载链接】nginx-rtmp-moduleNGINX-based Media Streaming Server项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module

这是个啥,能带你走到哪

nginx-rtmp-module 把 RTMP(实时流媒体传输协议)直播能力塞进 Nginx。这篇文章带你从零完成安装、配置到部署,终点是推出一路真流并拉下来验证。

读完你会完成三件事:把模块编进 Nginx 二进制、让最小 RTMP 配置跑起来、用三条命令确认推流真的通了。

三步把模块编进 Nginx

Step 1 拿到模块代码

git clone https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module

它是 Nginx 的扩展,单独跑不起来。源码都在仓库根目录,构建脚本是同目录下的 config 文件。

Step 2 拿 Nginx 源码和依赖

下载一份 Nginx 官方源码解压,模块必须跟着 Nginx 源码一起编。先装好 pcre、zlib、openssl 的开发包,这是编译机上最常缺的三个。

缺依赖,configure 当场报错。

Step 3 编译并安装

cd nginx-1.25.x ./configure --add-module=/path/to/nginx-rtmp-module make && sudo make install

加这个参数,模块才会编进二进制。老版本 nginx(1.3.14–1.5.0)还要再带上--with-http_ssl_module

验证安装成功:跑nginx -V 2>&1 | grep rtmp,输出里能看到--add-module=...nginx-rtmp-module就说明编进去了。

只改这 14 行就能推流

打开主配置(一般在 conf/nginx.conf),总共加两个块,多的一行都不用写。

块 1:RTMP 监听

rtmp { server { listen 1935; application myapp { live on; } } }

这段让 nginx 在 1935(RTMP 默认端口)上接推流,application myapp表示地址形如 rtmp://主机/myapp/流名 的流都归它管,live on打开直播转发。

必须核对两个值:1935 端口(被别的进程占了就换),以及 myapp(它会成为流地址的一部分,起名好记点)。

⚠️rtmp {}是顶层块,不能塞进http {}里面,这是最常见的配错姿势。

块 2:统计页

http { server { listen 8080; location /stat { rtmp_stat all; } } }

rtmp_stat all会把当前所有在线流和会话信息以 XML 吐到 /stat,不用 SSH 就能看有没有人在推。

8080 是随便选的,跟后面验证命令对上就行。

⚠️ 改完配置先nginx -t,看到 syntax ok 再sudo nginx -s reload

跑起来之后,用三条命令确认没配错

先本地推一路测试流(随便找个视频文件):ffmpeg -re -i input.mp4 -f flv rtmp://localhost/myapp/mystream

然后依次验证:

sudo ss -lnt | grep -E ':(1935|8080) ' curl -s localhost:8080/stat | head ffplay rtmp://localhost/myapp/mystream

ss 里 1935 和 8080 都应是 LISTEN 状态;推流时 /stat 返回的 XML 里能看到 mystream 这个流名;ffplay 弹出窗口开始播画面,说明整条链路通了。

仓库 test/www 下自带测试播放页,推流成功后打开就能看到画面:

两个高频报错

  • bind() ... 1935 failed (98: Address already in use):端口被占,用sudo ss -lntp | grep 1935找到占用者,或者换 listen 端口。
  • unknown directive "rtmp":模块没编进二进制,回去检查 configure 是否带了 --add-module,重新编译安装。

推流通了之后往哪走

想让 H5 播放,就在rtmp块里开hls,产出 HLS(HTTP 直播分片)片段;录像、on_publish 回调、relay 转推这些进阶玩法,test/nginx.conf 里都有现成片段可抄。

遇到问题,仓库 README 开头就列了 wiki 和社区讨论组入口,直接去问。

【免费下载链接】nginx-rtmp-moduleNGINX-based Media Streaming Server项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 21:28:02

基于RFC协议与Qt框架的跨平台C++客户端开发实践

在实际 C Qt 项目中,从零开始构建一个功能完整、架构清晰的客户端应用,是检验开发者工程能力的重要标尺。很多开发者熟悉 Qt 的控件和信号槽,但面对网络协议解析、跨平台适配、模块化架构设计等综合需求时,往往感到无从下手。本文…

作者头像 李华
网站建设 2026/8/21 21:26:04

ComfyUI高级工作流构建:从LoRA集成到ControlNet与双采样放大实战

在 Stable Diffusion 生态中,ComfyUI 以其节点式、可编程的工作流设计,为高级用户和研究者提供了远超 WebUI 的灵活性与控制力。然而,其陡峭的学习曲线和复杂的节点连接逻辑,常常让新手望而却步,也让许多从 WebUI 迁移…

作者头像 李华
网站建设 2026/8/21 21:24:03

VRCT 完全上手指南:三步搞定 VRChat 实时翻译与语音转录

VRCT 完全上手指南:三步搞定 VRChat 实时翻译与语音转录 【免费下载链接】VRCT VRCT(VRChat Chatbox Translator & Transcription) 项目地址: https://gitcode.com/gh_mirrors/vr/VRCT 进 VRChat 国际服,只能干看别人在聊天框里刷外语&#x…

作者头像 李华
网站建设 2026/8/21 21:23:22

iOS26 完整体验:液态玻璃背后,iOS26系统得与失

介绍:前言:要我说,这次的 iOS 26 绝对是一次大规模视觉与功能大改,也是苹果多年以来第一次对UI大改,“大改”方面主要引入了 液态玻璃 Liquid Glass全新设计语言,同时也对底层调度、生态互联、安全机制各个…

作者头像 李华
网站建设 2026/8/21 21:23:17

C++可变参数模板原理与工程实践

1. 为什么“可变参数模板”不是语法糖&#xff0c;而是C类型系统的一次越狱你写过printf("%d %s %f", a, b, c)&#xff0c;也写过std::cout << a << b << c&#xff0c;但有没有想过&#xff1a;为什么C标准库里的std::make_tuple能接受任意数量、…

作者头像 李华