立即在 ffmpeg 中過濾並合併

立即在 ffmpeg 中過濾並合併

我想一次對視訊檔案進行多項修改。

我需要在輸入影片中添加介紹和結尾影片片段。所以這意味著合併 3 個影片。我需要將覆蓋圖像添加到輸入視頻(第二段),僅此而已。我怎麼才能將它們合併到一行中?

我設法分兩步驟完成這些工作。首先是疊加層:

ffmpeg -i input.mkv -i image.png -filter_complex overlay=main_w-overlay_w-0:0 output_file.mkv

然後是合併:

ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv

答案1

[v1]我們可以對輸出使用臨時命名,overlay=main_w-overlay_w-0:0然後用作過濾器[v1]的輸入concat

ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -i image.png -filter_complex "[1:v][3:v]overlay=main_w-overlay_w-0:0[v1];[0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv


  • 以下部分套用覆蓋階段:
    [1:v][3:v]overlay=main_w-overlay_w-0:0[v1]
    覆蓋的輸出取得臨時名稱[v1]
  • [0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat
    用作( 而不是)[v1]的輸入。concat[1:v:0]

相關內容