FFMPEG并排合并

时间:2016-02-11 21:01:20

标签: shell ffmpeg

我正在尝试创建一个shell / ffmpeg脚本,它可以在并排/平铺方式使用不同的过滤器处理后显示多个文件。期望输出的示例是:https://www.youtube.com/watch?v=DoPuhMRYem4

为了创建所需的输出,我需要裁掉video1的右半部分和video2的左半部分,然后将它们与[video1 + video2]并排连接起来。我已经玩了很多不同的加入方法,这没关系:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "
nullsrc=size=800x400 [background];
[0:v] setpts=PTS-STARTPTS, scale=400x400 [left];
[1:v] setpts=PTS-STARTPTS, scale=400x400 [right];
[background][left]       overlay=shortest=1       [background+left];
[background+left][right] overlay=shortest=1:x=400 [left+right]
" -map '[left+right]' joined.mp4

如何修改此项以检测视频宽度(它们不会总是相同的宽度),将宽度分成两半并关闭左侧或右侧?

2 个答案:

答案 0 :(得分:10)

分屏

左右

enter image description here

 ffmpeg -i input0 -i input1 -filter_complex \
"[0:v]crop=iw/2:ih:0:0[left]; \
 [1:v]crop=iw/2:ih:ow:0[right]; \
 [left][right]hstack" output

顶部和底部

enter image description here

 ffmpeg -i input0 -i input1 -filter_complex \
"[0:v]crop=iw:ih/2:0:0[top]; \
 [1:v]crop=iw:ih/2:0:oh[bottom]; \
 [top][bottom]vstack" output

对角线

enter image description here

ffmpeg -i input0 -i input1 -filter_complex \
"[1:v][0:v]blend=all_expr=if(gt(X\,Y*(W/H))\,A\,B)" output

另见

答案 1 :(得分:0)

略有不同,但如果你想将输入视频中心裁剪并将它们并排放置,请使用:

ffmpeg -i input1  -i input2 -filter_complex \
"[0:v]crop=iw/2:ih:ow/2:0[left]; \
[1:v]crop=iw/2:ih:ow/2:0[right]; \
[left][right]hstack" output
相关问题