ffmpeg:无抖动的平滑缩放

Tim*_*ite 7 video 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
Run Code Online (Sandbox Code Playgroud)

输入 jpg输出 mp4

我知道ffmpeg 错误 #4298。发布的建议解决方法是scalezoompan. 但是如我的示例所示,这似乎仍然没有效果。

似乎任何任意的 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
Run Code Online (Sandbox Code Playgroud)

Gya*_*yan 13

避免下来事先缩放。将 trunc 函数应用于 x 和 y 表达式。或者先升级一下。最好是后者。这消除了我的大部分抖动。

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
Run Code Online (Sandbox Code Playgroud)

基本上,过滤器对xy表达式中的值进行四舍五入,可以向上或向下四舍五入。由于平移方向的变化,这会产生不均匀的运动。预先增加分辨率可以使舍入更小。