当任意多个循环输入缓冲区溢出时,如何使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大小
选项)