FFMPEG-如何在这些重叠的视频上获得边框

问题描述 投票:0回答:1

下面包含的批处理源在主视频的顶部覆盖了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 。然后将该图像呈现给缩放过滤器。

ffmpeg video-processing
1个回答
0
投票

垫式过滤器只能增加或保持框架尺寸,而不能减小框架尺寸。因此,您必须首先裁剪框架,然后再填充它。

所以,

[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

© www.soinside.com 2019 - 2024. All rights reserved.