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_ratio
Skalierungsoptionbeliebige Eingabegrößen in 640x640 einzupassen, und durchSplit und FIFO hinzufügenum die Erstellung der temporären Palettendatei zu vermeiden.