使用FFmpeg命令合并音视频

痴心易碎 提交于 2020-01-22 02:59:04

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!