我正在尝试创建一个mpeg-ts流,其中视频是Xvfb的屏幕抓图,音频是来自互联网广播(mp3或aac流)的。它工作得相当好,但是如果互联网广播出现问题,则整个输出停止,而不仅仅是音频,并且直到我杀死ffmpeg并重新启动后才恢复。
这是我正在使用的命令行
DISPLAY=:1 ffmpeg -re -video_size 768x576 -framerate 50 -f x11grab -i :1 -i http://internet-radio/mp3 -c:v mpeg2video -b:v 6000k -minrate 6000k -maxrate 6000k -bufsize 3000k -dc 10 -top 0 -f mpegts -c:a mp2 -ac 2 -b:a 192k -flags +ilme+ildct -vf "tinterlace=interleave_top" udp://192.168.0.1:1234?pkt_size=1316
有什么方法可以防止它停止(只要在音频输入返回之前产生静音),或者至少检测到它已失败,以便我可以编写脚本来重新启动它?
根据我所做的相当广泛的研究,ffmpeg是一个同步过程,因此当您的输入之一停止时,它将停止读取另一输入。我的猜测是,您将必须编写某种缓冲程序来接收音频并将其中继到ffmpeg,然后该程序将自动检测何时停止输入音频,并将静音中继到ffmpeg
—
Russell Uhl