Antworten:
Folgendes hat bei mir funktioniert:
ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4
movflags - Diese Option optimiert die Struktur der MP4-Datei, damit der Browser sie so schnell wie möglich laden kann.
pix_fmt - MP4-Videos speichern Pixel in verschiedenen Formaten. Wir fügen diese Option hinzu, um ein bestimmtes Format anzugeben, das über alle Browser hinweg maximale Kompatibilität bietet.
vf - MP4-Videos, die H.264 verwenden, müssen Abmessungen haben, die durch 2 teilbar sind. Diese Option stellt sicher, dass dies der Fall ist.
Quelle: http://rigor.com/blog/2015/12/optimizing-animated-gifs-with-html5-video
scale
mit crop
), wie Sie nur maximal 1 Pixel abschneidet gehen werden. Das Skalieren kann die Dinge
In meinem Fall hat die ffmpeg
direkte Verwendung den Trick ausgeführt und das beste Ergebnis geliefert:
$ ffmpeg -f gif -i infile.gif outfile.mp4
Eine andere Möglichkeit, GIF-Animationen in Videos umzuwandeln:
ffmpeg -i your_gif.gif -c:v libvpx -crf 12 -b:v 500K output.mp4
-crf-Werte können zwischen 4 und 63 liegen. Niedrigere Werte bedeuten bessere Qualität. -b: v ist die maximal zulässige Bitrate. Höher bedeutet bessere Qualität.
Wenn Sie die Ausgabe in "n Schleifen" erstellen möchten , sehen Sie sich diese Lösung auf einen Schlag an
Konvertieren wir also ein normal.gif in loop.mp4
Beispiel für einen Film mit 2 Loops:
ffmpeg -stream_loop 2 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y
Beispiel für einen Film mit 5 Loops:
ffmpeg -stream_loop 5 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y
ACHTUNG: es gibt ein -y [für das Überschreiben]
ffmpeg
Befehl ohne ausführen -y
, haben Sie viel weniger Chancen, versehentlich etwas zu überschreiben, das Sie nicht möchten. ( Wahrscheinlich gibt es auch eine Möglichkeit, ffmpeg
Videos in sich selbst umzuleiten und dies in einem Befehl ohne die Zwischendatei und das Überschreiben zu tun.)
MacOs Version ist wie folgt:
$ ffmpeg -i input.avi -pix_fmt yuv420p output.mp4