Monthly Archives: November 2011

Video-Konvertierung mit FFMPEG

FFmpeg ist eine Sammlung von OpenSource-Software-Tools zum Konvertieren von Digitalem Video- und Audiomaterial in verschiedene Codec- und Containerformate. Neben dem Programm “ffmpeg”, das für Windows, Linux und MacOS für die Kommandozeile zur Verfügung steht, steht mit libavcodec eine Programmierbibliothek (API) für GCC-Compiler zur Verfügung.

Achtung!

Der Versionsstand verschiedener ffmpeg-Versionen ist sehr unterschiedlich. Es sollte eine Version ab mind. 2012 oder 2013 eingesetzt werden, da erst damit korrekte h264/mp4-Files erzeugt werden können. Mit älteren Versionen wurde standardmäßig “MPEG4 V.1” erzeugt, das nicht kompatibel zu iPhone, Flash oder HTML5 ist. Grund: der File-Container ist MP4, auch “ISO File Format” (ISOFF) genannt. In dem Container wird aber das codierte Videoformat “MPEG4 Video” gespeichert (Codec).
Für Kompatibilität den o.g. Plattformen muss das Codecformat H.264 verwendet werden. ITU H.264 ist identisch mit ISO-Format MPEG4 AVC, Advanced Video Coding.

Anwendungsbeispiele

Umwandlung eines AVI-Files in ein MPEG4/MP4-File:


ffmpeg -i input.avi output.mp4

Befehlszeile mit expliziter Codec-Angabe zum Umwandeln in H264/MP4:


ffmpeg -i input.avi -vcodec libx264 -vprofile main output.mp4

Was bedeuten die weiteren Optionen?


-vcodec libx264 verwendet den freien H.264-Codec "x264"
-vprofile main verwendet das "Main-Profile" aus dem H.264 Standard

Welche Profile gibt es noch?

-vprofile baseline

verwendet das “Baseline Profile”, was ohne B-Frames komprimiert


-vprofile high

ist der Standard-Wert, der aber nicht zu allen Geräten kompatibel ist.

Einstellen der Qualität (Bitrate)

Die Bitrate wird über die Option “-b” eingestellt. In aktuellen ffmpeg-Versionen wird die Bitrate für den Video- oder Audioanteil getrennt über die Option “-b:v” eingestellt.

Beispiel:


ffmpeg -i input.avi -b:v 2000k -b:a 128k output.mp4

Änderung der Bildgröße

  • Skalierung

    Option “-s WIDTHxHEIGHT”

    Beispiel:

    ffmpeg -i input.avi -s 640x480 output.mp4

  • Crop (Abschneiden/Balken entfernen)


    ffmpeg -i INFILE -vf crop=640:360:0:60 ... OUTFILE

    crop : Operation: Ausschneiden
    640:360 : die Größe (Dimension) WIDTH:HEIGHT des Resultats
    0:60 : der Offset X:Y des Ausschnitts von der oberen linken Ecke
    des Eingangsmaterials (INFILE)

  • Pad (Balken einfügen)

    INFILE sei ein 16:9-formatiger Film der Größe 640×360, der mit 60 Pixel hohen Balken oben und unten auf 4:3-Format gebracht werden soll. Kommando:


    ffmpeg -i INFILE -vf pad=640:480:0:60 ... OUTFILE

    pad : Operation: Auffüllen
    640:480 : die Größe (Dimension) WIDTH:HEIGHT des Resultats (OUTFILE)
    0:60 : der Offset X:Y des Films von der oberen linken Ecke des Resultats

    Software-Download

    Weitere Links:

  • Hier findet sich eine lauffähige Version für Windows. (Stand Mai 2013)
  • ffmpeg-Homepage
  • Aktuelle Win32-Builds