nginx rtmp 模块搭建直播服务,方便在 Linux 系统里实现,使用包管理命令安装 nginx 和 nginx rtmp 模块。Windows 里,无法简单下载 nginx 官网加 rtmp 模块搭建,需要下载编译好的包。
参考
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。直播路径结尾,和 key 一样。
以及参考
https://github.com/arut/nginx-rtmp-module/
官网给出的配置例子。也包括 VOD 按需点播。
具体 nginx-rtmp 模块一些详细配置,参考官网 wiki:
https://github.com/arut/nginx-rtmp-module/wiki
可以限定,允许推流、播放的 IP 地址范围;
可以配置 nginx-rtmp 中继转发推流内容到其他服务器,如哔哩哔哩;
可以配置主动拉取其他播放地址的内容,取代推流,作为直播来源;
可以设置 HLS 格式直播加密,使用 AES 加密,每若干时长更换秘钥,这样播放前需要用 AES 秘钥解密;
可以设置保存直播内容,到视频文件。
关于推流权限限制,可以配置 on_publish,使用追加的密码参数,不过 rtmp 推流在互联网是明文传输的,参数可以被中间人截获到。
推流可以使用 OBS 直播软件,或者使用 ffmpeg 命令。ffmpeg 也可以获取摄像头内容发送到直播服务器。
播放,可以使用 rtmp、hls、dash 协议。
HLS 和 DASH 格式直播,都有几十秒的延迟,难以避免。
另外,局域网里也可以使用 udp 广播、多播,实现视频直播。具体 OBS 软件和 VLC 播放器也支持。