Nginx rtmp 模块重流到动态地址

Posted

技术标签:

【中文标题】Nginx rtmp 模块重流到动态地址【英文标题】:Nginx rtmp module restream to a dynamic address 【发布时间】:2021-12-08 22:42:39 【问题描述】:

一些流,例如:

rtmp://mysite:3939/app/aaaaaa;bbbb
rtmp://mysite:3939/app/wewewe;ffff
rtmp://mysite:3939/app/zeiwew;uuuu

来到我的 nginx。我想将它们重新流式传输到这些地址:

rtmp://localhost:1935/app/aaaaaa
rtmp://localhost:1935/app/wewewe
rtmp://localhost:1935/app/zeiwew

我有这个 rtmp 配置,但我不能使用 map 来制作目标地址。 我应该使用 $name 变量吗?如何?感谢您的帮助

rtmp 
    server 
        listen 3939;
        ping 30s;
        notify_method get;
        application app 
            live on;
            push rtmp://localhost:1935/app/;
        
    

【问题讨论】:

【参考方案1】:

有一种解决方法,使用 FFmpeg 拉取和重命名流:

ffmpeg -f flv -i rtmp://localhost:1935/app/bbbb \
  -c copy -f flv rtmp://localhost:1935/app/aaaaaa

注意:您可以使用on_publish 挂钩来启动您的FFmpeg 进程,或者exec 也应该可以工作。

处理流的非常强大的模式,不仅可以重命名流,还可以转码或转发到多个服务器等

不过引入 FFmpeg 有点复杂。

【讨论】:

以上是关于Nginx rtmp 模块重流到动态地址的主要内容,如果未能解决你的问题,请参考以下文章

用ffmpeg推流到nginx

centos使用一键lnmp+nginx-rtmp-module插件,使用obs推流到nginx

Windows使用Nginx+ffmpeg搭建RTMP服务器

无人机之眼 | ROS图像RTMP协议推流到地面站,CPU表示软件解码

无人机之眼 | ROS图像RTMP协议推流到地面站,CPU表示软件解码

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