
我正在嘗試播放影片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 秒的影片時間後,影片中止,僅顯示「已殺死」訊息。
我認為這是由於缺乏記憶,儘管我不確定這一點。現在我該怎麼做?關於如何成功覆蓋影片的任何想法,使得覆蓋的影片具有(至少大約)與背景影片相同的幀速率?