Hochwertige Aufzeichnung von Vorträgen/ ffmpeg
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