1.合併音頻和視頻
ffmpeg -i video.mp4 -i audio.aac -c:v copy -c:a copy -bsf:a aac_adtstoasc output.mp4
如果視頻中已經包含了音頻,替換視頻中的音頻,使用下面命令行
ffmpeg -i video.mp4 -i audio.aac -c:v copy -c:a copy -bsf:a aac_adtstoascmap 0:v:0 -map 1:a:0 output.mp4
2.橫向合併視頻
ffmpeg -i input1.mp4 -i input2.mp4 -lavfi hstack output.mp4
上面的命令雖然可以合併視頻,兩個視頻可以正常播放,但是隻保留了
input1.mp4的音頻。input1和input2必須同樣的高度,如果不一樣的高度可以使用-shortest參數來保證同樣的高度。
合併多個視頻,可以使用下面命令行:
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -lavfi hstack=inputs=3 output.mp4
其中input=3表示希望合併的視頻的個數
3.縱向合併視頻
`ffmpeg -i input1.mp4 -i input2.mp4 -lavfi vstack output.mp4``
4.網格合併視頻
當多個視頻時,還可以合併成網格狀,比如2x2,3x3這種。但是視頻個數不一定需要是偶數,如果是奇數,可以用黑色圖片來佔位。
ffmpeg -f lavfi -i color=c=black:s=1280x720 -vframes 1 black.png
該命令將創建一張1280*720的圖片
然後就可以使用下面這個命令來合併成網格視頻了,如果只有三個視頻,可以選擇上面創建的黑色圖片替代。
ffmpeg -i top_left.mp4 -i top_right.mp4 -i bottom_left.mp4 -i bottom_right.mp4 \ -lavfi "[0:v][1:v]hstack[top];[2:v][3:v]hstack[bottom];[top][bottom]vstack" -shortest 2by2grid.mp4
上面創建的是正規的2x2網格視頻。想象一下,現在只有三個視頻,我想把第一個視頻擺放在第一行的中間,然後把第二、三個視頻擺放在第二行。那麼就可以使用下面兩個命令了。
ffmpeg -f lavfi -i color=c=black:s=640x720 -vframes 1 black.png ffmpeg -i black.png -i top_center.mp4 -i bottom_left.mp4 -i bottom_right.mp4 -lavfi "[0:v][1:v][0:v]hstack=inputs=3[top];[2:v][3:v]hstack[bottom];[top][bottom]vstack" -shortest 3_videos_2x2_grid.mp4