FFMPEG - 如何获得这些叠加视频的边框



下面包含的批处理源在主视频的顶部覆盖了 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

所以我明白我对垫滤波器的理解是不完整的。 有人可以帮忙吗?

实际上,在重新阅读这个问题时,我发现我对垫要求的措辞令人困惑。 我想做的是让填充侵特征视频,即如果功能视频是 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)/2y=(oh-ih)/2

最新更新