【问题标题】:Zooming animation in FFMPEGFFMPEG 中的缩放动画
【发布时间】:2014-06-08 01:58:17
【问题描述】:

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

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

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

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

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

我知道我可以:

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

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

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

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

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

    "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'"

    会转到左下角。

    【讨论】:

    • Zoompan 似乎不能跨视频帧工作,一次只能一个。当我在 10 秒视频文件上使用第一个示例时,它会在第一帧上放大 10 秒,然后在不同的帧上以相同的速率放大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多