Konvertieren Sie mehrere GIFs

1349
dmm

Wie können mehrere animierte GIFs in Videos umgewandelt werden?

Ich verwende diesen Befehl, um 1 animiertes Gif in ein Video zu konvertieren:

ffmpeg -i aa0012.gif -crf 12 output.mp4 

Dies ist ein komplexerer Befehl zum Steuern der Abmessungen der konvertierten GIF:

ffmpeg -i aa0012.gif -vf "scale=min(1920/iw\,1920/ih)*iw:min(1920/iw\,1920/ih)*ih,pad=1920:1920:(1920-(min(1920/iw\,1920/ih)*iw))/2:(1920-(min(1920/iw\,1920/ih)*ih))/2" -c:v libx264 output.mp4 

Ich habe versucht mit:

-pattern_type glob -i '*.gif' 

Was für die meisten Bilddateien funktioniert, aber wenn ich versuche, wenn mit GIFs, wird der Fehler "* .gif: Keine solche Datei oder Verzeichnis" zurückgegeben.

0
mehrere gifs in einem video? oder mehrere GIFs in mehreren Videos? Gifs in HD-Video umwandeln? Logman vor 9 Jahren 0
Ihr Fehler "Keine solche Datei oder ein solches Verzeichnis" muss wahrscheinlich den vollständigen Pfad definieren oder das aktuelle Arbeitsverzeichnis festlegen. Logman vor 9 Jahren 0
Ich meine mehrere Gifs in einem Video. Beide Optionen wären jedoch gut, wenn Sie beide Lösungen kennen. Ich konvertiere sie nicht in HD-Video, sondern verwende diesen Befehl, um Bilder in Videos zu archivieren. dmm vor 9 Jahren 0
Da ich das Terminal Cd'ed in den Ordner habe, der die Gifs hat, sollte das nicht die Notwendigkeit aufheben, den Pfad zu definieren? dmm vor 9 Jahren 0
"Ich meine mehrere Gifs in einem Video." -> sind alle gifs dann gleich auflösung? Eigenschaften? Farben? das könnte die probleme verursachen Logman vor 9 Jahren 0
Nein, sie stammen aus verschiedenen Quellen, also haben sie unterschiedliche Dimensionen usw. Ich dachte, vielleicht könnte der Befehl, den ich oben angegeben habe, dieses Problem lösen. dmm vor 9 Jahren 0

1 Antwort auf die Frage

3
slhck

Animierte GIFs werden anders als normale "Bilder" behandelt. Tatsächlich sind sie eher wie echte Videos. Aus diesem Grund können Sie den Image-Demuxer dort nicht verwenden (dh die -pattern_typeOption kann nicht verwendet werden ).

Sie müssen jedes einzeln in eine Zwischendatei mit denselben Eigenschaften konvertieren und diese dann verketten .

ffmpeg -i gif1.gif -vf "…" -r 25 -c:v ffv1 output1.avi ffmpeg -i gif2.gif -vf "…" -r 25 -c:v ffv1 output2.avi … ffmpeg -i "concat:output1.avi|output2.avi" -c:v libx264 output.mp4 
Vielen Dank! Ich habe es getestet und es funktioniert. Aber ich habe ffv1 in libx264 geändert, da die Dateigröße mit der Option ffv1 zu groß war. Ich frage mich, ob ein Bash-Skript erstellt werden könnte, um mehrere GIFs mithilfe Ihres Befehls zu konvertieren. dmm vor 9 Jahren 0
Wenn Sie libx264 anstelle von FFV1 verwenden, führen Sie zwei verlustbehaftete Kodierungen durch. Dies wird nicht empfohlen, da Sie an Qualität verlieren. Wenn Sie bei libx264 bleiben möchten, wählen Sie für die Zwischenprodukte `-c: v libx264 -preset ultrafast -crf 18`. Dies kann sicherlich mit bash automatisiert werden… slhck vor 9 Jahren 0