ffmpeg

Das ffmpeg-Projekt hat sich vor einiger Zeit geforkt; avconv ist derzeit noch kompatibel zu ffmpeg zu verwenden. Hier nutze ich ffmpeg in den Beispielen.

ffmpeg ist ein freies OpenSource Programm zum Umwandeln (Konvertieren) von Videodateien. Es wird von vielen Videoschnittprogrammen (wie zum Beispiel KDEnlive) benutzt um Proxy-Clips aus den Eingabedateien zu generieren, mit denen das Programm besser und schneller umgehen kann.

ffmpeg kann zur Kompression von Videodateien/Audiodateien benutzt werden, sowie zur Erstellung einer Animation aus einer Bilderfolge oder zur Extraktion von Bildern oder eines Audiostreams aus einer Videodatei. ffmpeg wird über die Kommandozeile des Betriebssystems benutzt.

Diese kleine Einführung entbehrt jeder Vollständigkeit. Sollten Sie auf Ihre Frage keine Antwort finden, fragen Sie einfach im Forum oder werfen Sie einen Blick auf die offizielle Dokumentation: http://ffmpeg.org/documentation.html.

Einrichtung

Windows

Für Windows-Nutzer empfiehlt sich der Download von hier: http://ffmpeg.zeranoe.com/builds/. Entpacken Sie das Archiv (zB. mit 7-zip). Nun sollten Sie den Pfad zum /ffmpeg/bin -Ordner in der PATH-Variable von Windows eintragen. Öffnen Sie dazu Start → Systemsteuerung → System → Erweiterte Einstellungen → Umgebungsvariablen und fügen Sie den Pfad der PATH Variable hinzu.

Linux (Ubuntu)

Unter Ubuntu ist die Einrichtung denkbar einfach:

sudo apt-get install ffmpeg

Da sie wahrscheinlich noch zusätzliche Codecs mitinstallieren wollen empfiehlt sich die Installation der Pakete direkt mit:

bis Ubuntu Natty Narwal:

sudo apt-get install ffmpeg libavcodec-extra-52 \
libavdevice-extra-52 libavformat-extra-52 libavutil-extra-49 \
libavutil-extra-50 libpostproc-extra-51 libswscale-extra-0 

ab Ubuntu Oneiric Ocelot:

sudo apt-get install ffmpeg libavcodec-extra-53 \
libavdevice-extra-53 libavformat-extra-53 libavutil-extra-51 \
libpostproc-extra-52 libswscale-extra-2 

Verwendung

ffmpeg wird über die Kommandozeile verwendet. Dh. Sie benötigen die Eingabeaufforderung (unter Windows) bzw. ein Terminal unter Linux. In den folgenden Code-beispielen gehe ich davon aus, dass die Eingabedateien „input.*“ heißen und die Ausgabedateien „output.*“. Ersetzen Sie die Dateinamen beim ausprobieren durch die bei Ihnen vorhandenen Dateien.

ffmpeg benötigt Eingabedateien, die mit dem Parameter -i angegeben werden können. Wenn der Parameter alleine steht, also ohne Angabe einer Ausgabedatei, wird die Eingabedatei lediglich analysiert (auf Codecs, Bitrates, Framerates,…). Beispielsweise könnte folgender Befehl folgende Ausgabe liefern:

ffmpeg -i "input.m2ts"

Ausgabe (gekürzt):

Input #0, mpegts, from 'input.M2TS':
  Duration: 00:01:28.40, start: 0.387044, bitrate: 10449 kb/s
  Program 1
    Stream #0:0[0x1011]: Video: h264 (Main) (HDMV / 0x564D4448), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 384 kb/s

So lassen sich Rückschlüsse fassen über aktuelle Codierung der zu verarbeitenden Videos. Wenn Sie ein Video umwandeln wollen, verwenden Sie ffmpeg allgemein folgendermaßen:

ffmpeg [Optionen] {[[Eingabedateioptionen] -i Eingabedatei]} {[Ausgabedateioptionen] Ausgabedatei}

Ich gehe von einem Beispielfall aus, in dem Sie ein interlaced-m2ts Video (h264) der Bildgröße 1920×1080 in ein besser zu verarbeitenden deinterlaced mpeg2-Video mit Bildgröße 1280×720 umwandeln wollen. Die Audiospur wird in eine MP3-Spur mit 256 Kbit/s Bitrate umgewandelt Die Eingabedatei hat den Namen „input.m2ts“, die Ausgabedatei den Namen „output.mpg“. Sie könnten das Video folgendermaßen umwandeln:

ffmpeg -i "input.m2ts" -vcodec mpeg2video -acodec libmp3lame -ab 256k -vb 20000k -s 1280x720 -aspect 16:9 -deinterlace "output.mpg"

Die Parameter haben folgende Bedeutung:

Parameter Bedeutung
-i „input.m2ts“ Gibt die Eingabedatei an
-vcodec mpeg2video Gibt den Videocodec der Ausgabe an (Mpeg2)
-acodec libmp3lame Gibt den Audiocodec der Ausgabe an (MP3)
-ab 256k Gibt die Bitrate der Audiospur der Ausgabe an (256 Kbit/s; Nicht das k hinter 256 vergessen!
-vb 20000k Gibt die Bitrate der Videospur der Ausgabe an (in dem Fall 20.000 Kbit/s
-s 1280×720 Stellt die Zielauflösung ein
-aspect 16:9 Stellt das Seitenverhältnis des Ausgabebildes ein (16:9)
-deinterlace Deinterlact das Bild
„output.mpg“ Ausgabedatei