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 秒的影片時間後,影片中止,僅顯示「已殺死」訊息。

我認為這是由於缺乏記憶,儘管我不確定這一點。現在我該怎麼做?關於如何成功覆蓋影片的任何想法,使得覆蓋的影片具有(至少大約)與背景影片相同的幀速率?

相關內容