ffmpeg:平滑缩放,无抖动

ffmpeg:平滑缩放,无抖动

我正在尝试创建一个基本的 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

输入 jpg输出 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,这些值可能向上或向下四舍五入。这会因平移方向的变化而产生不均匀的运动。预先增加分辨率可以使四舍五入更小。

相关内容