当多个循环输入缓冲区中的任何一个溢出时,如何使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_sizethread_queue_size选项(。

最新更新