通过 nginx-rtmp 模块搭建直播服务

nginx rtmp 模块搭建直播服务,方便在 Linux 系统里实现,使用包管理命令安装 nginx 和 nginx rtmp 模块。Windows 里,无法简单下载 nginx 官网加 rtmp 模块搭建,需要下载编译好的包。

Windows 下集成 rtmp 模块的编译好的 nginx 包的下载   http://nginx-win.ecsds.eu/

参考

How to set up your own private RTMP server using nginx | OBS Forums

https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/

使用 OBS 推流的自定义设置。推流的 URL 是固定的, key 是任意自定义内容。

也参考

Enabling Video Streaming for Remote Learning with NGINX and NGINX Plus - NGINX

https://www.nginx.com/blog/video-streaming-for-remote-learning-with-nginx/

它的内容有误,直播推流路径是固定的 /live ,key 随意写;直播目录不是 /live,而是 /hls 和 /dash,root 值写作 /tmp 。直播路径结尾,内容要和 key 一样。

以及参考

https://github.com/arut/nginx-rtmp-module/

官网给出的配置例子。包括 VOD 按需点播。

具体 nginx-rtmp 模块一些详细配置,参考官网 wiki:

https://github.com/arut/nginx-rtmp-module/wiki

可以使用 allow、deny 指令配置限定、允许推流、播放的 IP 地址(范围);

可以配置 nginx-rtmp 中继转发推流内容到其他服务器,如哔哩哔哩;

可以配置主动拉取其他播放地址的内容,取代推流,作为直播来源;

可以设置 HLS 格式直播加密,使用 AES 加密,每若干时长更换秘钥,这样播放前需要用 AES 秘钥解密;

可以设置保存直播内容,到视频文件。

关于推流权限限制,可以配置 on_publish,使用追加的密码参数,不过 rtmp 推流在互联网是明文传输的,参数可以被中间人截获到。

推流可以使用 OBS 直播软件,或者使用 ffmpeg 命令。ffmpeg 也可以获取摄像头内容发送到直播服务器。

播放,可以使用 rtmp、hls、dash 协议。

HLS 和 DASH 格式直播,都有几十秒的延迟,难以避免。

另外,局域网里也可以使用 udp 广播、多播,实现视频直播。具体 OBS 软件和 VLC 播放器也支持。

考虑服务器带宽限制,会需要将单一推流服务器内容推送或被动拉取到多个播放服务器,或推送到大型直播网站平台,其中可以使用 ffmpeg 处理加上水印。

有基于 SSL 加密传输的 RTMPS 协议,nginx-rtmp 模块不支持它。但可以嵌入 ffmpeg 实现 RTMPS 加密协议推流。

原文地址:https://www.cnblogs.com/silvestris/p/15115947.html