FFMPEG 中的缩放动画

dmc*_*dor 5 ffmpeg

我需要为视频输入制作缩放动画。

使用crop过滤器可以制作平移动画,如下所示:

"crop=320:240:max(0\\,min(iw-ow\\,n)):0"

其中前两个参数宽度和高度是固定的,后两个参数接受帧数n或时间戳t作为表达式参数。

但是宽度和高度只计算一次(并且不能使用nor t),所以我不能根据时间裁剪尺寸,然后scale对原始尺寸应用过滤器。

我知道我可以:

  • 从 buffersink 拉出每一帧后更改过滤器(我不在命令行中,我在我的软件中使用库)。我已经这样做了,但不是针对每一帧,只有在线应用程序中的用户请求。
  • 使用geq过滤器“将通用方程应用于每一帧”。

这两种方法看起来都很昂贵。我可以使用其他过滤器或方法吗?

请注意,我在 Windows 中使用了 zeranoe FFMPEG 库。我宁愿不开发自己的过滤器或修改 FFMPEG 源。

jrk*_*rkt 5

您可以通过添加应用简单的缩放

"zoompan=z='zoom+0.001'"

到您的视频过滤器。默认情况下,它会慢慢放大到左上角。如果您想做一些更高级的事情,您可以添加 x 和 y 参数以开始在其他方向和可变速度上进行缩放。一个例子

"zoompan=z='zoom+0.001':x='if(gte(zoom,1.5),x,x+1)':y='y'"

会到右上角

"zoompan=z='zoom+0.001':y='if(gte(zoom,1.5),y,y+1)':x='x'"

会去左下角。