我使用以下内容将两个多播重新复用为一个:
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_size
和 thread_queue_size
选项)。
关于ffmpeg - 当多个循环输入缓冲区中的任何一个溢出时如何使ffmpeg失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66790399/