无需重启 nginx 即可重新加载 nginx RTMP 配置文件

无需重启 nginx 即可重新加载 nginx RTMP 配置文件

我的场景是:我有一个 nginx 服务器,用于将 RTMP 直播流转发到 YouTube。我想在直播运行时在配置文件 (nginx.conf) 中添加一些其他目的地。

更改配置文件后,我使用 nginx reload 命令:

nginx -s reload

不幸的是,配置文件中的更改(即额外的目的地)直到使用以下命令重新启动 nginx 服务器后才会生效:

systemctl restart nginx

随着 nginx 服务器的重新启动,流中会出现几秒钟的停机时间。

有没有办法可以更改 nginx-rtmp 配置而不必重新启动 nginx 服务器?

答案1

我遇到了同样的问题,简而言之,你不能。原因是 nginx 会在处理这些请求的 nginx 进程死亡之前妥善处理任何待处理的请求。由于 rtmp 流是长连接,因此不会发生这种情况,只要您的视频流处于开启状态,旧配置就会保持不变。不过,您可以使用 ffmpeg 的解决方法,从您的服务器获取流并将其复制到您的首选目的地。

ffmpeg -y -analyzeduration 0 -rtmp_live live -i "rtmp://localhost:1935/live/my-live-stream" -c:v copy -c:a copy -max_muxing_queue_size 1024 -f flv "rtmp://a.rtmp.youtube.com/live2/<your-youtube-key-here>"

相关内容