使用 Nginx RTMP 模块联播多个广播公司流的最佳方法是啥?考虑使用 Docker,但这似乎有点矫枉过正

Posted

技术标签:

【中文标题】使用 Nginx RTMP 模块联播多个广播公司流的最佳方法是啥?考虑使用 Docker,但这似乎有点矫枉过正【英文标题】:What would be the best way to simulcast multiple broadcasters streams using Nginx RTMP module? Considering using Docker, but it seems like overkill使用 Nginx RTMP 模块联播多个广播公司流的最佳方法是什么?考虑使用 Docker,但这似乎有点矫枉过正 【发布时间】:2020-04-15 00:28:53 【问题描述】:

看起来同播单个用户 RTMP 流就像在我的 nginx.conf 文件中创建一个 RTMP 服务器配置并使用 push 指令将流推送到不同的社交媒体 RTMP url 一样简单,但什么是最好的如果我有多个用户需要将他们的数据流式传输到他们自己的社交媒体实时帐户,该怎么做?

以下是我能想到的可能解决方案:

    使用 docker 为每个注册的人创建多个安装了 Nginx RTMP 的容器。然后我可以编辑和管理单独的 RTMP 服务器配置并重新加载配置,这样它们就可以开始流式传输了。不过,这听起来像是很多开销。

    如果可能的话,我可以在单个环境(启用站点)中为每个用户设置多个 RTMP 服务器配置,并在不关闭 NGINX 的情况下重新加载配置,但使用不同的端口似乎并不理想,我觉得就像服务器重新加载配置时发生的事情一样,每个正在流式传输的人都有可能断开连接。 编辑: 启用站点似乎是不可能的,因为它需要在根上下文中(仅限 nginx.conf)根据https://github.com/arut/nginx-rtmp-module/issues/1492

    使用他们的流密钥映射到每个用户的 RTMP 推送指令,然后转发到该用户的社交媒体?

有什么想法吗?

这是我的单服务器配置示例:

rtmp 
        server 
                listen 1935;
                chunk_size 4096;

                application live 
                        live on;
                        record off;
                        push rtmp://facebook/STREAM KEY HERE;
                        push rtmp://youtube/STREAM KEY HERE;
                
        

我是 RTMP 的新手,如果你还没有学会它:P

【问题讨论】:

看起来 Node RTMP 将成为实现此类目标的最佳解决方案。 【参考方案1】:

在 Github 上查看以下项目,它完全符合您的需求:

https://github.com/jprjr/multistreamer

【讨论】:

以上是关于使用 Nginx RTMP 模块联播多个广播公司流的最佳方法是啥?考虑使用 Docker,但这似乎有点矫枉过正的主要内容,如果未能解决你的问题,请参考以下文章

使用nginx-rtmp-module 部署了一个rtmp服务, 但是推流地址只有一个,我如何才能有多个推流地址

使用 nginx rtmp 在多个流输入之间切换

Nginx 的RTMP打流模块配置

markdown 媒体流服务器di Ubuntu menggunakan Nginx rtmp模块

Nginx学习之配置RTMP模块搭建推流服务

Nginx学习之配置RTMP模块搭建推流服务