Zum Inhalt springen

Hochwertige Aufzeichnung von Vorträgen/ ffmpeg

Aus Wikibooks

ffmpeg

[Bearbeiten]

Diese mächtige Werkzeugsammlung für Multimedia-Verarbeitung bietet breite Funktionalität für Aufnahme, Konvertierung und Formatierung von Audio- und Video-Daten. Es ist ein Kommandozeilen-Programm und eignet sich somit hervorragend für Scripte. Enthalten sind sehr schnelle Video-Encoder (z.B.: x264 für h.264 ) und Assambler wie Yasm und ermöglicht somit Echtzeit-Encodierung wie es für diese Anwendung notwendig ist. Außerdem wird ein nützliches Analyse-Tool ffprobe, ein Video-Player ffplay sowie ein Streamingserver ffserver mitgeliefert.

Ein beispielhafter ffmpeg-Aufruf

[Bearbeiten]

Schon die Kurzform der ffmpeg-Doku (man page) umfasst mehr als 4000 Zeilen. Um sich dieser Komplexität langsam zu nähern, sei hier ein einfacher ffmpeg-Aufruf erläutert, welcher die wesentlichen Merkmale eines solchen vorführt:

Beispiel Parameter Erklärung
-i video1.avi ein oder mehrere Inputs als Input wird hier eine Video-Datei angegeben
-c:a libmp3lame -c:v libxvid Parameter für Audio- und Video-Encoder Als Codecs werden mp3 (Audio) und xvid (Video) verwendet
-vf scale=320:240 Filteroptionen der scale-Filter scaliert das Video auf die angegebene Größe <x>:<y>
new.video1.avi einem Output steht am Ende des Befehls Ausgabe-Datei, die Endung legt gleichzeitig das Container-Format fest


Mit den beschriebenen Parametern wird also eine beliebige Videodatei umkodiert (zu xvid-Video und mp3-Audio) und skaliert (320x240). Ein kompletter Aufruf mit diesen Parametern würde also folgendermaßen aussehen:

 ffmpeg -i video1.avi 
        -c:a libmp3lame 
        -c:v libxvid 
        -vf scale=320:240 
        new.video1.avi

Grundlegend folgt ein ffmpeg-Aufruf der Struktur:

  • Festlegen der Inputs
  • Verarbeitung, Modifikation
  • Speicherung in einem Videocontainer oder Weiterleitung per Pipe

Ansatz für die Aufzeichnungslösung

[Bearbeiten]

Für die parallele Aufnahme mehrerer Streams müssen entsprechend viele Inputs gleichzeitig verarbeitet werden. Glücklicherweise ist das mit ffmpeg problemlos möglich, ohne ffmpeg mehrmals parallel aufrufen zu müssen. Ein Schema zum entsprechenden Aufruf für 1 Audio-Stream und 2 Video-Streams sieht so aus:

 ffmpeg -i <Audio-Input>
        -i <Video-Input 1>
        -i <Video-Input 2>  
        -c:v <Video-Codec>
        -c:a <Audio-Codec>
        <... weitere Parameter für die Modifikation der Streams ...>
        output_aufnahme.mkv