2015-04-01 391 views
0

我试图用nginx和nginx-rtmp-module部署实时流传输系统。强制ffmpeg在连接失败时忽略错误

对于我系统中的每个节点,我希望它可以将接收到的实时流“转发”到下游节点。我尝试在我的nginx.conf如下配置来实现它:

exec_push ffmpeg -i rtmp://localhost/src/test -vcodec copy -strict -2 -ar 44100 -ac 1 -f flv rtmp://<downstreaming A>/src/test -f flv rtmp://<downstreaming B>/src/test

当一切都运行良好,但如果下游节点发生故障,该命令将退出,并没有下行节点可以接收它的工作原理直播。

我该如何强制ffmpeg忽略connetion refused,还是有没有更好的替代方案来实现我的?

回答

0

由于RTMP使用需要连接的TCP,因此您不能忽略connection refused

如果我理解正确,您正在尝试对RTMP源进行转码并将其发送到多个服务器。

  1. 你可以重复你的命令发送到每个下游节点 的个体,但你会做两次的转码。
  2. 另一种方法是转码,并在同一台机器上发布使用 ffserver的转码流,然后推到/每个下游服务器
+0

上拉那正是我想做的事情。 – Given92 2015-04-02 01:55:31

+0

解决方案1可能存在的问题是,当下游节点太多时,CPU可能会过载,我担心。虽然解决方案2的问题是只有上游节点知道直播流的开始,并且下游节点需要额外的通知。 – Given92 2015-04-02 02:04:11

+0

然后转码一次,并使用多个命令推送到'ffserver',然后'exec_push'。 – aergistal 2015-04-02 10:44:19

相关问题