Wie kann ich mit ffmpeg eine MP4-Datei in ein GIF konvertieren, zuschneiden und die Größe ändern?

Wie kann ich mit ffmpeg eine MP4-Datei in ein GIF konvertieren, zuschneiden und die Größe ändern?

Ich möchte, dass ffmpeg eine 1280x720 MP4-Videodatei erfasst, auf das quadratische Größenverhältnis zuschneidet und die Größe auf 640x640 ändert

Die folgenden beiden Befehle funktionieren bei mir mit hervorragender GIF-Qualität, aber es fehlt einfach die richtige Größenanpassung. Ich bekomme zwar eine GIF-Ausgabe, aber die Größe ist 1138x640 statt 640x640.

Erstellen einer Palette:

ffmpeg -y -ss 30 -t 3 -i input.mp4 \
-vf fps=10,scale=1138:-1:flags=lanczos,palettegen palette.png

GIF-Ausgabe mithilfe der Palette:

ffmpeg -ss 30 -t 3 -i input.mp4 -i palette.png -filter_complex \
"fps=10,scale=1138:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

Dadurch erhalte ich ein 1138x640.gif, aber wie kann ich es auf 640x640 vergrößern, ohne einen weiteren separaten Befehl zu verwenden?

Antwort1

Hier ist eine einfache Methode, die für 1280 x 720-Eingaben funktioniert.

Palette erzeugen:

ffmpeg -i input.mp4 -filter_complex "fps=10,scale=-1:640,crop=ih:ih,setsar=1,palettegen" palette.png

GIF erstellen:

ffmpeg -i input.mp4 -i palette.png -filter_complex "[0]fps=10,scale=-1:640,crop=ih:ih,setsar=1[x];[x][1:v]paletteuse" output.gif

Sie können dies bei Bedarf komplexer gestalten, indem SieHinzufügen der force_aspect_ratioSkalierungsoptionbeliebige Eingabegrößen in 640x640 einzupassen, und durchSplit und FIFO hinzufügenum die Erstellung der temporären Palettendatei zu vermeiden.

verwandte Informationen