【问题标题】:Force ffmpeg to ignore error when connecting failed连接失败时强制ffmpeg忽略错误
【发布时间】:2015-04-01 07:05:51
【问题描述】:

我正在尝试使用 nginx 和 nginx-rtmp-module 部署一个实时流传输系统。

对于我系统中的每个节点,我希望它可以将接收到的实时流“转发”到下游节点。我尝试通过在我的 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,或者我的实现是否有更好的替代方案?

【问题讨论】:

    标签: nginx ffmpeg rtmp live-streaming


    【解决方案1】:

    您不能忽略connection refused,因为 RTMP 使用需要连接的 TCP。

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

    1. 您可以复制您的命令以发送到每个下游节点 单独进行,但您将进行两次转码。
    2. 另一种方法是转码和发布转码流,使用 ffserver 在同一台机器上,然后在每个下游服务器上推送/拉取

    【讨论】:

    • 这正是我想做的。
    • 方案1可能出现的问题是,当下游节点过多时,CPU可能会过载,我担心。而解决方案2的问题是只有上游节点知道直播的开始,下游节点需要额外的通知。
    • 然后转码一次并使用多个命令推送到ffserver 然后exec_push
    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 2022-01-21
    • 2013-10-16
    • 2018-08-15
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多