Ich habe ein paar Bilder, die diesem Muster folgen.
0001.png
0004.png
0007.png
0010.png
0013.png
0016.png
0019.png
...
Sie sind in der richtigen Reihenfolge, aber FFMPEG ignoriert nach der ersten Datei alles, da es keine findet 0002.png
. Wie kann ich es schaffen, diese Dateien zusammenzufügen?
Ich habe es versucht
ffmpeg -i %04d.png out.avi
Antworten:
mit ffmpeg 0.11.1 ist es so einfach wie:
Auf der
man
Seite in einem Beispiel unter "Konvertierung von Video- und Audiodateiformaten":Update per Kommentare: Bei neueren Versionen sollten Sie jetzt die
-i '*.png'
Syntax verwenden.quelle
glob_sequence
Mustertyp ist veraltet, derglob
Mustertyp jedoch nicht. Die Antwort von Mulvya und Peter Cordes funktioniert.Pattern type 'glob_sequence' is deprecated: use pattern_type 'glob' instead
Pattern type 'glob_sequence' is deprecated
...): Der von rymo oben angegebene Befehl (insbesondere-i %*.png
) wird die Warnung auslösen . Verwenden Sie die leicht abweichende Syntax in Peter Cordes answer (-i '*.png'
) , um das Problem zu beheben .Neben der Problemumgehung in meinem Kommentar sollten Sie in der Lage sein, diese Syntax aus der ffmpeg- Dokumentation zu verwenden :
Die Anführungszeichen sind wichtig, Sie brauchen ffmpeg, um das zu sehen
*
, nicht die Shell, um es zu erweitern.quelle
*.png
einfache Anführungszeichen (so'*.png'
) verwenden müssen, um zu vermeiden, dass es durch Shells im Unix-Stil (so, OSX und Linux usw.) erweitert wird.Von http://www.ffmpeg.org/faq.html : Wenn Sie eine große Anzahl von Bildern umbenennen müssen, können Sie den folgenden Befehl verwenden, um die Belastung zu verringern. Der Befehl verknüpft mit der Bourne-Shell-Syntax symbolisch alle Dateien im aktuellen Verzeichnis, die mit * jpg übereinstimmen, mit dem Verzeichnis '/ tmp' in der Reihenfolge 'img001.jpg', 'img002.jpg' usw.
x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done
quelle
seqA-[0001-n].png
,seqB-[0001-n].png
etc. Viel einfacher , als mit image2 rumgespielt Globbing und den concat - Filter.for i in *jpg
mitfor i in /full/path/*jpg
, weil alle die Symlinks gebrochen wurdenIch würde tatsächlich das gleiche vorschlagen, was Mulvya vorgeschlagen hat. Wann immer ich beim Rendern von 3D-Animationen solche Dinge tun musste, habe ich die Dateien umbenannt, um sie sequenziell zu gestalten. Es ist einfach einfacher, auf diese Weise in vielen verschiedenen Programmen zu arbeiten, es sei denn, Sie müssen die Dateinamen aus irgendeinem Grund beibehalten. Total Commander ist auch ein großartiges Tool für das Umbenennen von Dateien.
quelle
Für den fehlenden Sequenzteil habe ich 2 Liner verwendet
Hoffe, das wird jemandem in Zukunft helfen
quelle