我正在尝试创建一个基本的 5 秒缩放到图像的中心(来自ffmpeg.org 网站)。下面的命令有效,但是比我喝了 5 杯咖啡之后的手还要紧张:
ffmpeg -framerate 25 -loop 1 -i island.jpg -filter_complex "[0:v]scale=-2:480,zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125,trim=duration=5[v]" -map "[v]" -y out.mp4
我知道ffmpeg 错误 #4298scale
。发布的建议解决方法是在之前使用过滤器zoompan
。但正如我的示例所示,这似乎仍然没有效果。
似乎任意的 x 或 y 值都会引起抖动/急促/摇晃的效果。
有人能提供任何有效的解决方法吗?谢谢!
版本信息:
ffmpeg version 3.1.2-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (Debian 5.4.0-6) 20160609
答案1
避免向下事先缩放。要么对 x 和 y 表达式应用 trunc 函数。要么事先将其放大。最好是后者。这可以消除我的大部分抖动。
ffmpeg -framerate 25 -loop 1 -i island.jpg -filter_complex "[0:v]scale=8000x4000,zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125,trim=duration=5[v]" -map "[v]" -y out.mp4
x
基本上,过滤器会对和表达式中的值进行四舍五入y
,这些值可能向上或向下四舍五入。这会因平移方向的变化而产生不均匀的运动。预先增加分辨率可以使四舍五入更小。