ffmpeg: sanftes Zoomen ohne Wackeln

ffmpeg: sanftes Zoomen ohne Wackeln

Ich versuche, einen einfachen 5-Sekunden-Zoompan zur Mitte eines Bildes zu erstellen (aus dem Beispiel auf derffmpeg.org-Website). Der folgende Befehl funktioniert, zittert aber mehr als meine Hände nach 5 Tassen Kaffee:

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

Eingabe jpg. Ausgabe mp4.

Ich bin mir bewusst,ffmpeg-Fehler #4298. Der gepostete Workaround-Vorschlag besteht darin, den scaleFilter vor zu verwenden zoompan. Aber wie in meinem Beispiel gezeigt, scheint dies immer noch keine Wirkung zu haben.

Es scheint, dass beliebige x- oder y-Werte den Wackel-/Ruck-/Zittereffekt verursachen.

Kann irgendjemand eine effektive Problemumgehung anbieten? Danke!

Versions Information:

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

Antwort1

Vermeidenruntervorher skalieren. Entweder eine Trunc-Funktion auf die x- und y-Ausdrücke anwenden. Oder vorher hochskalieren. Am besten letzteres. Damit beseitige ich den größten Teil des Jitters.

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

Grundsätzlich rundet der Filter die Werte aus den xund yAusdrücken, die entweder auf- oder abgerundet werden können. Dadurch entsteht eine ungleichmäßige Bewegung aufgrund von Änderungen in der Schwenkrichtung. Durch vorheriges Erhöhen der Auflösung kann die Rundung kleiner ausfallen.

verwandte Informationen