当任意多个循环输入缓冲区溢出时,如何使ffmpeg失败

当任意多个循环输入缓冲区溢出时,如何使ffmpeg失败,ffmpeg,video-streaming,Ffmpeg,Video Streaming,我使用如下方法将两个多路广播重新多路复用为一个: ffmpeg -i udp://239.1.1.1:5000 -i udp://239.1.1.2:5000 -map 0:v -map 0:a -map 1:a -codec copy -f mpegts udp://239.1.1.3:5000 如果其中一个多播消失,另一个会很快溢出其循环缓冲区,导致输入线程按预期退出 不幸的是,另一个循环缓冲区没有溢出,因为没有输入,所以ffmpeg挂起不做任何事情 是否有可能以这样的方式配置ffmpeg

我使用如下方法将两个多路广播重新多路复用为一个:

ffmpeg -i udp://239.1.1.1:5000 -i udp://239.1.1.2:5000 -map 0:v -map 0:a -map 1:a -codec copy -f mpegts udp://239.1.1.3:5000
如果其中一个多播消失,另一个会很快溢出其循环缓冲区,导致输入线程按预期退出

不幸的是,另一个循环缓冲区没有溢出,因为没有输入,所以ffmpeg挂起不做任何事情

是否有可能以这样的方式配置ffmpeg:如果任何输入线程退出,ffmpeg将停止


提前谢谢

答案是在选项中添加
-xerror
,以强制ffmpeg停止并在出现错误时退出

这可以与相关输入的
-timeout
值结合使用,在这种情况下,当该时间段内没有数据到达时,ffmpeg将立即退出

或者,可以使用循环缓冲区溢出来触发错误,但ffmpeg实际上不会失败,直到下一次从输入缓冲区读取到线程消息队列,这要求失败的多播返回,因为线程消息队列将被阻塞(取决于指定的
fifo\u大小
thread\u queue\u大小
选项)