我正在尝试创建一个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
如何修改此项以检测视频宽度(它们不会总是相同的宽度),将宽度分成两半并关闭左侧或右侧?
答案 0 :(得分:10)
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
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
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