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 錯誤 #4298。發布的建議解決方法是scale在 之前使用過濾器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基本上,過濾器對and表達式中的值進行四捨五入y,這些值可以向上或向下舍入。由於平移方向的變化,這會產生不均勻的運動。預先提高解析度可以使舍入更小。

相關內容