我正在尝试使用ffmpeg创建视频马赛克。我的完整命令看起来像这样 -
ffmpeg -i rtmp://localhost:1935/live/output1 -i rtmp://localhost:1935/live/output2 -i rtmp://localhost:1935/live/output3 -i rtmp://localhost:1935/live/output4 -filter_complex "nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; [base][upperleft] overlay=shortest=0 [tmp1]; [tmp1][upperright] overlay=shortest=0:x=320 [tmp2]; [tmp2][lowerleft] overlay=shortest=0:y=240 [tmp3]; [tmp3][lowerright] overlay=shortest=0:x=320:y=240" -filter_complex amix=inputs=4:duration=longest -c:a aac -strict -2 -ar 44100 -c:v libx264 -f flv rtmp://localhost:1935/live/myStream
只要所有4个输入流都在运行,这种方法就可以正常工作。但是说其中一个流下降了一段时间并重新上线。输出继续显示此流被卡住(暂停)。因为一旦流丢弃(AVERROR_EOF)ffmpeg
停止尝试从输入流中获取更多数据包。我必须重新启动ffmpeg进程才能恢复所有工作。
有没有办法在这里添加重试逻辑,只要进程处于活动状态,就会告诉ffmpeg继续尝试处理所有输入源?