Aus SatriaWiki
Wechseln zu: Navigation, Suche

FFmpeg ist eine sehr vielseitige open-source Konsolenanwendung, um Videomaterial aller Art zu bearbeiten, insbesondere zwischen den verschiedenen Formaten zu konvertieren.

Einzelbilder zu einem Video machen

Aber ist auch das beste freeware tool, um aus vielen einzelnen Bildern ein Video zu machen! Ab einer gewissen Anzahl von Einzelbildern streiken andere, grafische tools und werden unbrauchbar. FFmpeg ist es quasi egal, wie viele Einzelbilder vorliegen. Sie werden sowieso nicht alle gleichzeitig gecached, geladen oder angezeigt.

Voraussetzung ist, das alle Bilder einen einheitlichen Namen haben und durchnummeriert sind, wie z.B.

Frame 001.jpg
Frame 002.jpg
Frame 003.jpg

Dann lässt sich aus ihnen mit folgendem Befehl ein Video generieren:

ffmpeg.exe -i "Frame %03d.jpg" -f xxx Video.xxx

Natürich kann oder muss man die restlichen Parameter für gewünschtes Format, Codec usw. korrekt angeben. Knackpunkt ist hier die Pseudo-Input-Datei "Frame %03d.jpg". Der Platzhalter "%03d" steht für alle dreistelligen Zahlen mit führenden Nullen (also 001, nicht 1). Also werden alle Dateien der Reihe nach abgearbeitet, die mit "Frame " beginnen, dann eine 3-stellige Nummer und die Endung ".jpg" haben. Genauso funktionieren natürlich auch Namen wie "Bild%04d.jpg", "Sequenz 1 %05d.bmp" usw.
Zwei Einschränkungen: Wenn die Nummerierung Lücken aufweist, hört FFmpeg an dieser Stelle auf und das Video ist dort zu Ende. Ist eine Bild-Datei fehlerhaft, gilt das gleiche.

Mit einem kleinen Trick lässt sich auch SmartFFmpeg dazu nutzen, Bilder zu einem Video zusammenzufügen.
Im gleichen Verzeichnis wie die Einzelbilder wird eine Dummy-Datei angelegt, die einen Namen wie Frame %03d.jpg (passend zu den bild-Dateien) trägt. Die Windows-Dateinamenkonvention erlaubt das zum Glück.
Diese wird in SmartFFmpeg als Input Datei geladen und kann dann wie gewohnt bearbeitet werden, indem man das Preset für AVI Dateien lädt oder was auch immer als Zielformat beliebt.

Dateien zusammenfügen

Stichwort "concat". Ja, ffmpeg kann auch Dateien des selben Typs zu einer Datei zusammenfügen und dabei noch ggf. in ein gewünschtes Zielformat konvertieren. Es kann sein, dass das und hier und die Sache mit den Einzelbilden alternativ verwendet werden können.

Die Textdatei, die dazu als Quell-Liste der Dateien dient, die aneinandergehängt werden sollen muss so aussehen:

file 'path\to\file'
file 'path\to\nextfile'

Sagen wir, sie heißt Liste.txt

Die Parameter für ffmpeg lauten:

ffmpeg -f concat -safe 0 -i Liste.txt

Mehrere Audio-Streams

Die Syntax, um mehrere Audio-Streams mit einem Video-Stream zu multiplexen, ist folgende Syntax notwendig:

ffmpeg <Input params> -i <Audio/Video input file 0> -i <Audio input file 1> -map 0:0 -map 0:1 <Output file> -map 1:0 -newaudio

Timestamps generieren

Bei der Meldung Timestamps are unset in a packet for stream 0, kann das hier in den Output Paramatern helfen:

-fflags +genpts

oder

-use_wallclock_as_timestamps 1

Bei Seekproblemen wurde auch schon mal

-fflags +nofillin

empfohlen.

Quellen

... und weitere Tutorials:
http://www.acmor.de/lang/en/2009/12/15/how-to-convert-images-to-video-using-ffmpeg-wie-man-bilder-zu-videos-konvertiert-mit-ffmpeg/
http://lists.mplayerhq.hu/pipermail/ffmpeg-user/2006-October/004663.html
http://electron.mit.edu/~gsteele/ffmpeg/ https://trac.ffmpeg.org/wiki/Concatenate