Wie konvertiere ich ein animiertes GIF in ein mp4- oder mv4-Format in der Befehlszeile?


79

Welchen Befehl würde ich verwenden, um eine mp4- oder mv4-Videodatei in ein animiertes GIF zu konvertieren und umgekehrt. Konvertieren Sie ein animiertes GIF in ein mp4- oder mv4-Format.

Antworten:


108

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


4
Danke, dies ist die einzige Version, die für mich unter OSX funktioniert hat.
Pykler

1
Dies funktionierte für mich auf Ubuntu 16.10 mit ffmpeg 3.0.2, wo die beste Antwort nicht war
cat

1
Und anstelle der Skalierung (ersetzen zuschneiden scalemit crop), wie Sie nur maximal 1 Pixel abschneidet gehen werden. Das Skalieren kann die Dinge
verschwimmen

Das hat mir die letzten Sekunden abgeschnitten. Resultierendes mp4 endete früh.
Callum

38

In meinem Fall hat die ffmpegdirekte Verwendung den Trick ausgeführt und das beste Ergebnis geliefert:

$ ffmpeg -f gif -i infile.gif outfile.mp4

2
hat ein leeres (beschädigtes) Video auf os x
Pykler 14.07.16 um 23:53

2
@ Pykler Sie sollten wahrscheinlich die Ausführlichkeit erhöhen und / oder die Protokolldatei überprüfen, um zu verstehen, was passiert.
BenC

Ich auch, wahrscheinlich das "durch 2 Dimensionen teilbare", das in der Antwort von Vico Vault vorgeschlagen wurde. (was bei mir funktioniert hat)
Lapo

Diese Methode hat bei mir perfekt funktioniert. (Die beste Antwort führte dazu, dass das Ende um 3 Sekunden gekürzt wurde.) BEARBEITEN: Oh, aber es wird nicht auf iOS
Callum

Eine Webseite sagt, Sie sollten nur -pix_fmt yuv420p
Beefeather

2

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.


2

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]


Wenn Sie den ersten ffmpegBefehl 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, ffmpegVideos in sich selbst umzuleiten und dies in einem Befehl ohne die Zwischendatei und das Überschreiben zu tun.)
FERD

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.