FFmpeg: Videodatei-Einzelbilder auslesen

… geht unter Ubuntu so:

1. Lagere den Film in einen eigenen Ordner aus. Vor allem dann, wenn zu erwarten ist, dass die folgende Aktion zigtausend kleine Bilddateien erzeugen wird.

2. Starte das Terminal und wechsle in das Verzeichnis, in welchem die Videodatei gespeichert ist. Etwa so:

cd /home/Benutzerin/Desktop/Zielordner

3. Nun gib eine Befehlszeile wie diese ein …

ffmpeg -i Videoclip.flv -sameq -ss 00:02:34 -t 00:00:12 -s 320x240px standbild%5d.jpg

… und bestätige sie mit einem Druck auf die Eingabetaste. Ist das Programm bisher noch nicht installiert, wird dir das angezeigt. Eventuell auftretende Fehlermeldungen gilt es zu scrooglen. Normalerweise sollte jedoch alles glatt gehen.

4. Warte ab, bis FFmpeg seine Arbeit getan hat. Je nach Rechenpower und Anzahl der Frames kann sich das länger hinziehen als gedacht.

Die Teile der obigen ‘Befehlskette’ im Einzelnen

( ffmpeg ) Eigentlich selbsterklärend. Ohne diese Buchstabenkombination weiß das Betriebssystem nicht, welches Programm es ausführen soll.

( -i ) Vor dem Start seiner Rechenarbeit zeigt FFmpeg nun Informationen zur Datei namens Videoclip.flv – ein auf Youtube gefundenes Flashvideo – an; Laufzeit, Bildmaße und einige Dinge mehr.

( -sameq ) Stellt sicher, dass die Qualität der Einzelbilder so hoch ist wie in der Quelle.

( -ss ) bestimmt – in Stunden, Minuten und Sekunden (hh:mm:ss) – den Zeitpunkt, ab welchem die auszulesende Bildsequenz beginnt. Du kannst sie herausfinden, indem du den Digitalfilm in einem Videoplayer deiner Wahl bis zur gewünschten Stelle vorspulst.

( -t ) bestimmt indirekt die Anzahl der auszulesenden Einzelbilder. Falls du auf diese oder beide Zeitangabe(n) verzichtest, zerlegt FFmpeg das gesamte Video in Standbilder. Dies kostet Zeit, Rechenleistung und Speicherplatz und ist überhaupt eine dumme Entscheidung.

( -s ) legt die Bildmaße [Breite x Höhe in Pixeln] der entstehenden Dateien fest.

( %5d.jpg ) Es werden Bilder im JPG-Format generiert, die durchgehend fünfstellig nummeriert sind. Je mehr Bilder du erwartest, desto vielstelliger sollte diese Angabe sein. Die Nummerierung beginnt unabhängig von der Startzeit bei Eins; in diesem Beispiel heisst die erste Datei demzufolge standbild00001.jpg.

5 thoughts on “FFmpeg: Videodatei-Einzelbilder auslesen

  1. stefan herwig

    supi funktioniert prima,die einzelbilder aus dem video zu extrahieren,die seite ist spitze.Aber kann man die extrahierten bilder im jpg-format auch noch in einer besseren qualität machen,man sieht dann doch die jpg.artifakte eben verschmierte kästchen,ich lese die bilder aus videos meistens mit gimp-gap aus.das funktioniert eben auch gut,aber aus dem universe das gimp-gap geladen für ubuntu 9.04 geht zwar der export aber nicht der import,deshalb habe ich das hier als alternative gesehen.

  2. admin Post author

    Bist du sicher, dass die Artefakte nicht bereits im Video so drin sind, und allein deshalb nicht auffallen, weil der Film läuft?

  3. Philipp

    Hi,

    also die Bilder sind nach ffmpeg in der Tat deutlich schlechter als im Video selbst. Da Bildgröße ist auch jeweils nur ca. 10-20 KB für 640×480 Pixel.

    Wenn ich im VLC-Player Screenshots erstelle dann sind die Bilder 400-500 KB und in der gleichen Qualität wie im Video.

    In Avidemux das gleiche Bild, Dateigröße um die 10-20 KB und Qualität entpsrechend schlecht. Optionen zum Einstellen der Kompression gibt es wohl nicht :(

  4. henteaser Post author

    Ich habe gerade in der FFmpeg-Dokumentation die Option ‘-sameq’ gefunden. “Use same video quality as source (implies VBR [variable Bitrate?]).” Das könnte die Lösung sein. — EDIT: Der Artikel ist jetzt aktualisiert.

  5. Pingback: ImageMagick: Gif-Animationen erstellen mit convert | Henteaser.de

Comments are closed.