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.