仿射滤波器是一种很好的方法。
下面是一个例子:
echo "
description=Square
frame_rate_num=24
frame_rate_den=1
width=640
height=640
progressive=1
sample_aspect_num=1
sample_aspect_den=1
display_aspect_num=1
display_aspect_den=1
colorspace=708
" > square_profile.txt
melt -profile ./square_profile.txt clip.mp4 -filter affine transition.geometry="0=0,0:1138x640; 720=-498,0:1138x640"
该示例假定:
- clip.mp4是一个16×9源(1920×1080将工作)
- 剪辑是720帧长(例如30秒在24 fps)
让我为你分解的例子。
第一部分指定一个640x640的自定义配置文件,它具有正方形的宽高比。您不需要每次创建文件。您可以根据您的规格进行定制。
-profile ./square_profile.txt
这告诉融化使用您的自定义配置文件。
transition.geometry= ...
这就是你如何告诉仿射过渡(仿射过滤器在内部使用)你想要它做什么。每个几何条目的第一个数字是它适用的帧号。过滤器将在帧之间插值。几何条目的语法是:“K = X,Y:WxH”,其中“K”是几何图形适用的关键帧。
0=0,0:1138x640
第一几何条目告诉仿射滤波器到图像缩放到1138x640和所述图像(0,0)处的位置。
640是输出高度 - 告诉仿射将原始图像缩放到640的高度以填充输出帧。 1138是640像素高的16x9图像的宽度。 1138比输出图像宽。而且由于我们将图像指定为0,0,图像的右侧部分将被仿射过滤器剪切掉。
720=-498,0:1138x640
第二几何条目告诉仿射滤波器,以保持相同的缩放,但是到图像的-498的x位置进行定位。 489 = 1138 - 640.也就是说,在第一帧中从图像中裁剪出的像素数量。否定信息表示将图像定位在输出框的左侧,以便将图像的左侧部分裁剪掉。 “720 =”指定这是第720帧的几何图形。
0到720之间的所有帧的x位置将由仿射滤波器自动插值。所以你会看到图像从左到右滚动。
您可以将更多关键帧添加到几何图形,以使其在特定位置暂停或使其前后移动。仿射过渡(仿射过滤器使用)也有其他有趣的操作,如镜像和循环。你可以在这里看到完整的文档: http://www.mltframework.org/bin/view/MLT/TransitionAffine#scale
谢谢。我确实阅读了“完整”文档。在“几何”一个只发现: 标题:矩形 类型:几何 只读:没有 要求:没有 像你这样的解释,以什么参数做。我确实注意到(0,0)将缩放剪辑的左上角放置在左上角(而不是右下角)。 –
好点。我编辑了答案以减少混淆。 – Brian
没有很多志愿者加强文档。所以有时候需要一些发现。我发现理解这些参数的最简单方法之一是安装使用MLT(即KDENLIVE或Shotcut或Flowblade)的开放源代码视频编辑器,使用GUI制作您正在查找的效果,然后检查保存的项目文件。 MLT项目文件是XML,易于阅读,并可帮助发现参数(如几何)的工作方式。 – Brian