nginx-rtmp-module 安装配置实战:从零搭建 RTMP 直播服务器 📅 发布时间:2026/8/21 20:14:07 👁 浏览次数: nginx-rtmp-module 安装配置实战从零搭建 RTMP 直播服务器【免费下载链接】nginx-rtmp-moduleNGINX-based Media Streaming Server项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-modulenginx-rtmp-module 是一个为 Nginx 扩展直播能力的开源模块它能让你用一台普通服务器同时实现 RTMP 推流/拉流、HLS 分片点播和多路分发。按本文顺序完成安装与配置后你将拥有一台可以接受推流、对外分发实时流并通过网页查看运行状态的直播服务器。1. 项目定位它能帮你做什么简单说nginx-rtmp-module 把 Nginx 从一个 Web 服务器变成媒体流服务器推流端用 RTMP 协议把音视频推上来观众端可以直接用 RTMP 播放也可以通过 HLS 协议面向移动端的分片播放方式观看。它适合搭建直播源站、多推多拉的流媒体分发节点也适合配合 FFmpeg 做转码和录制。源码按核心协议 独立功能模块的方式组织根目录是 RTMP 协议处理与指令解析hls/与dash/子目录分别放 HLS 和 DASH 转封装逻辑test/目录内置了测试配置和播放/推流页面装完后可以直接用来验证服务是否可用。2. 动手前的准备环境要求与依赖清单这个模块本身不独立运行而是编译进 Nginx所以准备工作的核心是备好 Nginx 源码和编译工具链。项目要求说明操作系统LinuxmacOS/FreeBSD 亦可Windows 下部分功能受限Nginx 源码1.x 版本源码包模块需随 Nginx 一起编译不能用 yum/apt 装的成品编译工具gcc、make源码编译必需依赖库PCRE、zlib 开发包Nginx 常规依赖FFmpeg可选用于本地推流转测或配合 exec 指令做转码端口1935RTMP、8080HTTP 验证提前确认未被占用⚠️ 注意如果你机器上已经用包管理器装过 Nginx直接升级是加不进这个模块的必须走源码重新编译。3. 安装流程获取源码 → 编译 → 验证集成3.1 第一步获取模块源码先克隆模块仓库记下模块目录路径下一步要用到。git clone https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module验证点nginx-rtmp-module/目录下能看到config文件和若干ngx_rtmp_*.c源文件即源码完整。3.2 第二步把模块编进 Nginx然后进入 Nginx 源码目录用--add-module指定模块路径进行配置再依次执行编译与安装。./configure --add-module/path/to/nginx-rtmp-module make make install--with-http_ssl_module在部分 1.3.14~1.5.0 旧版本中需要额外加上新版本通常不必。验证点安装完成后执行nginx -V 21 | grep add-module输出里能看到--add-module/path/to/nginx-rtmp-module说明模块已成功集成看不到就回到 configure 一步检查路径。4. nginx.conf 配置详解最小可用配置 关键指令先给一份能跑通推流 → 播放 → 查看统计的最小配置加在 Nginx 主配置中即可rtmp { server { listen 1935; chunk_size 4096; application live { live on; allow publish 127.0.0.1; deny publish all; } } } http { server { listen 8080; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } } }这份配置的含义是1935 端口收流live应用开启直播并只允许本机推流8080 端口的/stat以 XML 输出运行状态。逐项说明关键指令指令作用建议值 / 备注listenRTMP 监听端口1935 是行业默认值chunk_sizeRTMP 分块大小影响吞吐与内存4096 起卡顿可调大live on开启直播转发多播一收多模式直播应用必开allow / deny publish控制推流来源 IP生产环境务必限制防止被恶意占用hls on / hls_path把流转成 HLS 分片并落盘配hls_fragment 5s目录建议放 tmpfs 如 /tmp/hls且需 http 里用application/vnd.apple.mpegurl m3u8; video/mp2t ts;声明类型rtmp_stat / rtmp_stat_stylesheetHTTP 输出统计配套项目根目录的 stat.xsl 可在浏览器直接看页面exec流事件触发外部命令常配 FFmpeg 做转码/录制Windows 不支持push / pull多机分发推模式/拉模式搭建分布式流媒体时使用5. 启动服务与验证三步确认直播可用⚠️ 改动配置后先备份原文件再执行语法校验确认无误才重载nginx -t # 语法检查须输出 syntax is ok / test is successful nginx -s reload # 平滑重载不中断已有连接然后做端到端验证本机起一个推流端例如用 FFmpeg 把本地视频按直播节奏推到 1935 端口接着另一个终端用 ffplay 或test/目录里的网页播放器拉rtmp://localhost/live/流名。成功判定的信号有三个/stat页面能看到该应用下的 publisher 与 subscriber 计数拉流端画面正常出图error.log 中没有publish权限类报错。三个信号齐了说明整条链路已通。6. 常见坑速查改完配置提示unknown directive rtmp模块没编进去或用了旧二进制。用nginx -V确认--add-module没有就重新编译安装。推流报权限拒绝allow publish限制了来源 IP。检查推流端真实出口 IP 是否在允许列表里别只写了 127.0.0.1 就跨机推流。HLS 在浏览器/手机端播不了通常是hls_path目录没建、或 http 层没声明 m3u8/ts 的 Content-Type。先确认分片文件确实落盘再补 types 声明。Windows 下 exec、auto_push 不生效属于官方明确的功能限制不是配置错误这类需求请换 Linux 环境。7. 小结到这里你已经完成了 nginx-rtmp-module 的编译集成、最小配置和端到端验证得到一台可用的 RTMP 直播服务器。后续可按需叠加录制record、转码exec FFmpeg、多机分发push/pull等能力。更多指令细节可查阅项目自带的 wiki 手册与社区讨论组遇到具体问题也可直接在仓库 issue 中检索或提问。【免费下载链接】nginx-rtmp-moduleNGINX-based Media Streaming Server项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考