我正在尝试创建一个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
Run Code Online (Sandbox Code Playgroud)
如何修改它以检测视频宽度(它们的宽度并不总是相同),将宽度分成两半并关闭左侧或右侧?
llo*_*gan 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
ffmpeg -i input0 -i input1 -filter_complex \
"[1:v][0:v]blend=all_expr=if(gt(X\,Y*(W/H))\,A\,B)" output
Run Code Online (Sandbox Code Playgroud)