下面包含的批处理源在主视频的顶部覆盖了2个“功能视频”。功能在不同的时间间隔淡入和淡出。
@set "Args="
@set "Args=%Args% [1:v]scale=480:270,fade=in:st=5:d=1:alpha=1, fade=out:st=15:d=1:alpha=1[ovr1];"
@set "Args=%Args% [2:v]scale=480:270,fade=in:st=10:d=1:alpha=1, fade=out:st=20:d=1:alpha=1[ovr2];"
@set "Args=%Args% [0:v][ovr1] overlay=W/12:H/12[tmp1];"
@set "Args=%Args% [tmp1][ovr2] overlay=W/6+100:H/6+100"
call ffmpeg -y ^
-i "Vid0.mp4" ^
-i "Vid1.mp4%" ^
-i "Vid2.mp4%" ^
-filter_complex "%Args%" ^
"Output.mp4
这的行为符合我的预期,但我想在视频周围添加边框,最好不要影响图像的缩放大小,即将特征视频裁剪然后填充,以便显示的特征尺寸为保留。
我尝试过:
@set "Args="
@set "Args=%Args% [1:v]pad=width=iw-(iw/100):height=ih-(ih/50):x=iw/200:y=ih/100:color=violet[pad1];"
@set "Args=%Args% [pad1]scale=480:270,fade=in:st=5:d=1:alpha=1, fade=out:st=15:d=1:alpha=1[ovr1];"
@set "Args=%Args% [2:v]scale=480:270,fade=in:st=10:d=1:alpha=1, fade=out:st=20:d=1:alpha=1[ovr2];"
@set "Args=%Args% [0:v][ovr1] overlay=W/12:H/12[tmp1];"
@set "Args=%Args% [tmp1][ovr2] overlay=W/6+100:H/6+100"
假设我要在淡入/淡出之前应用边框,以使其与所包含的图像一起淡入淡出。但是我得到这个错误:
Input area -10:-12:1910:1068 not within the padded area 0:0:1900:1058 or zero-sized
因此,我对垫式滤波器的理解不完整。有人可以帮忙吗?
实际上,在重新阅读问题时,我发现我对便笺本要求的措辞令人困惑。我想要做的是在功能视频上填充encroach,即,如果功能视频为1920x1080,则应将图像裁剪为1910x1070,并添加5像素边框,以使结果图像恢复为1920x1080 。然后将该图像呈现给缩放过滤器。
垫式过滤器只能增加或保持框架尺寸,而不能减小框架尺寸。因此,您必须首先裁剪框架,然后再填充它。
所以,
[1:v]pad=width=iw-(iw/100):height=ih-(ih/50):x=iw/200:y=ih/100:color=violet[pad1]
成为
[1:v]crop=iw-10:ih-10,pad=w=iw+10:h=ih+10:x=-1:y=-1:color=violet[pad1]
作物过滤器首先从宽度和高度中删除10个像素。由于这是默认行为,因此它将在所有方面统一执行。然后,垫将加回10个像素。通过将x和y设置为-1 *,它将使输入帧在新填充的帧中居中。
如果您的ffmpeg版本较旧,请使用x=(ow-iw)/2
和y=(oh-ih)/2
。