尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Nginx RTMP 直播流媒体完整教程:零基础搞定 nginx-rtmp-module 安装配置

Nginx RTMP 直播流媒体完整教程:零基础搞定 nginx-rtmp-module 安装配置 Nginx RTMP 直播流媒体完整教程零基础搞定 nginx-rtmp-module 安装配置【免费下载链接】nginx-rtmp-moduleNGINX-based Media Streaming Server项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-modulenginx-rtmp-module 是 Nginx 的流媒体扩展模块装上后 Nginx 能接收 RTMP 推流OBS 等直播工具默认使用的推流协议把实时流转成 HLS 分片把视频切成小片段逐个下发浏览器兼容性最好还能用 HTTP 页面实时监控直播。整个 nginx-rtmp-module 安装配置 共四步备源码、编译、启动、写最小配置全程约 15 分钟。安装准备获取 nginx-rtmp-module 源码与依赖动手前备齐两样东西Nginx 源码包和模块源码。git clone https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module.git这条命令把模块源码克隆到本地 nginx-rtmp-module 目录Nginx 源码请到 Nginx 官网下载稳定版1.6 以上即可并解压。目录结构很扁平根目录下的 C 文件是 RTMP 协议、直播、录像等核心逻辑hls/ 与 dash/ 是两种输出格式的实现test/ 提供示例配置 test/nginx.conf 和网页播放器验证效果时直接用。nginx-rtmp-module 编译命令--add-module 一步集成源码就位编译只需三步核心在 --add-module 参数。cd /path/to/nginx-1.24.0 # 进入 nginx 源码目录 ./configure --add-module/path/to/nginx-rtmp-module # 把模块登记进编译计划 make # 编译出 nginx 可执行文件 sudo make install # 默认安装到 /usr/local/nginxconfigure 阶段--add-module 指向模块根目录其下的 config 文件列出了待编译的 .c 源文件与头文件依赖Nginx 构建脚本读它来决定怎么编make 把 RTMP 模块和 Nginx 一起编译make install 生成最终二进制。注意老版本 Nginx1.3.14–1.5.0需要追加 --with-http_ssl_module否则编译报错。启动 Nginx 并确认 RTMP 模块生效编译完成先别急着改配置先确认模块真的挂上了。sudo nginx -V 21 | grep rtmp这条命令打印完整编译参数并过滤 rtmp输出里能看到 --add-module 的路径说明模块已编进二进制。sudo nginx # 启动服务 sudo nginx -s reload # 热加载新配置无需重启 sudo nginx -s stop # 停止服务三条命令分别对应启动、重载、停止日常运维基本够用。RTMP 转 HLS 最小配置live 与 hls 两个 application确认无误后编辑 /usr/local/nginx/conf/nginx.conf 写入下面这段最小配置。rtmp { server { listen 1935; # RTMP 推流监听端口 chunk_size 4096; # 单次网络 IO 的字节数 application live { # 接收推流、多人同时拉流 live on; # 开启实时直播 } application hls { # 把实时流写成 HLS 分片 live on; hls on; hls_path /tmp/hls; # 分片输出目录 hls_fragment 10s; # 每个分片的时长 hls_playlist_length 60s;# 播放列表保留的总时长 } } } http { server { listen 8080; location /hls { # 浏览器拉取分片 root /tmp; types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } add_header Cache-Control no-cache; } } }逐项看listen 1935 是 RTMP 默认端口OBS 推流地址填 rtmp://服务器IP/应用名/流名chunk_size 控制单次读写字节数保持默认即可application live 的 app 名要和推流地址里的 app 段一致live on 让流可被多个客户端同时观看application hls 里hls_path 是分片落盘目录hls_fragment 10s 表示每 10 秒切一个 .tshls_playlist_length 60s 决定 .m3u8 列表保留多长的片段索引http 段的 /hls 负责把分片喂给播放器types 声明 m3u8/ts 的 MIME 类型缺了它部分浏览器会拒播。推流端把地址指向 rtmp://服务器/hls/流名浏览器访问 http://服务器:8080/hls/流名.m3u8 即可观看。⚠️注意/tmp/hls 目录必须提前创建且 nginx 运行用户默认 nobody可写否则分片写不出来。仓库 test/ 目录还附带一套 JWPlayer 演示页面可配合 test/nginx.conf 快速验证推流与播放效果Nginx 流媒体排错语法检查与三类常见故障配置改完先检查再重载。sudo nginx -t # 语法检查 sudo nginx -s reloadnginx -t 会先模拟解析整份配置看到 syntax is ok 再执行 reload。排错时先看 error_log再对照三类高频故障端口占用——启动报 bind() 1935 failed用 ss -lntp | grep 1935 找出占用者杀掉旧实例或改 listen 端口路径不存在——hls_path 指向的目录没建日志出现 no such filemkdir 即可权限不足——worker 默认非 root 运行输出目录属主是 root 且权限 700 时写不进去改属主或放宽权限。另外仓库根目录的 stat.xsl 配合 rtmp_stat 指令还能搭一个看在线人数的直播监控页。延伸阅读到这里一台能收流、出片、可监控的 Nginx 直播服务器就跑起来了想继续深入可以研究 exec 外部命令、notify HTTP 回调与 relay 多机分发dash/ 目录也已内置 MPEG-DASH 输出。官方 wiki仓库 doc/README.md 指向的指令手册覆盖全部配置项文档目录源码仓库的 doc/ 目录社区讨论区Google 群组 nginx-rtmp搜索同名群组即可提问【免费下载链接】nginx-rtmp-moduleNGINX-based Media Streaming Server项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-module创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表