ffmpeg叠加视频卡顿

ffmpeg叠加视频卡顿

我正在尝试播放视频 background.mp4,同时将另一个视频 overlay.mp4 叠加在背景视频上的小矩形中。叠加视频应该会延迟。

通过查找 ffmpeg,我构建了以下命令:

ffmpeg -i background.mp4 
       -i overlay.mp4  
       -filter_complex "[1]setpts=PTS-STARTPTS+162/TB, scale=512:288 [over]; 
                        [0][over] overlay=748:412 [outv];
                        [1:a]adelay=162000|162000 [audio];
                        [0:a][audio] amix [outa]" 
       -map "[outv]" 
       -map "[outa]" 
       -codec:v libx264 
       -crf 21 
       -bf 2 
       -flags +cgop 
       -pix_fmt yuv420p 
       output.mp4

这样就按照我想要的方式成功合并了视频。但是叠加的视频很卡顿很多(最多冻结 30 秒),而背景视频播放正常。
控制台发出很多消息,说:“缓冲区队列溢出,丢弃。”

我在网上搜索过这个问题,发现我应该添加一个 fifo 缓冲区。所以我尝试:

ffmpeg -i background.mp4 
       -i overlay.mp4  
       -filter_complex "[1]fifo, setpts=PTS-STARTPTS+162/TB, scale=512:288 [over]; 
                        [0][over] overlay=748:412 [outv];
                        [1:a]adelay=162000|162000 [audio];
                        [0:a][audio] amix [outa]" 
       -map "[outv]" 
       -map "[outa]" 
       -codec:v libx264 
       -crf 21 
       -bf 2 
       -flags +cgop 
       -pix_fmt yuv420p 
       output.mp4

但是这个命令从未成功完成。播放大约 60 秒的视频后,它会中止,只显示“已终止”消息。

我推测这是由于内存不足造成的,尽管我对此并不确定。我现在该怎么办?有没有办法成功地叠加视频,使叠加的视频具有(至少大致)与背景视频相同的帧速率?

相关内容