Hochwertige Aufzeichnung von Vorträgen/ Der Befehl und das Script
Der Befehl und das Script
BearbeitenDer Software-Anteil der Lösung besteht im Wesentlichen aus einem mehrzeiligen ffmpeg-Befehl mit zahlreichen Optionen und Parametern. Das "Geheimnis" der Lösung steckt hauptsächlich in diesem Befehl, dessen Zusammenstellung viel Know How und zahlreiche Tests und (Fehl-) Versuche erfordert.
Die Bestandteile dieses Befehls sollen im Einzelnen erklärt werden und der lange Befehl aus einzelnen Komponenten aufgebaut werden, was
- didaktisch geschickt ist,
- die Flexibilität deutlich erhöht,
- ein Mindestmaß an Übersicht ermöglicht,
- die Erstellung einer kleinen Befehlskomponenten-Sammlung erlaubt,
- die Fehleranfälligkeit verringert und
- die (unvermeidliche) Fehlersuche erleichtert.
Der ffmpeg-Befehl
BearbeitenSchon 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 angebebene Größe <x>:<y>
|
new.video1.avi |
einem Output (auch hier mehrere möglich) steht am Ende des Befehls | Ausgabe-Datei, die Endung legt gleichzeitig das Container-Format fest |
Ein kompletter Aufruf mit diesen Parametern würde also folgendermaßen aussehen:
ffmpeg -i video1.avi -c:a mp3 -c:v xvid -vf scale=320:240 new.video1.avi
Es folgt ein komplexerer ffmpeg-Aufruf, welcher zwei Video- und einen Audio-Stream gleichzeitig aufzeichnet. ffmpeg akzeptiert als Eingabe auch Datenströme von anderen (Hintergrund-) Prozessen (hier bmdcapture), die mittels einer Pipe übergeben werden:
ffmpeg -i (bmdcapture -m 10 -V 3 -C 0 -v -F nut -f pipe:1 &)
Befehl als Script
BearbeitenDie obigen beispielhaften Ausschnitte lassen erahnen, dass es von Vorteil ist, den ffmpeg-Bandwurm mit den Mitteln der Bash_Shell aus übersichtlichen Bestandteilen zusammenzubauen. Zartes Grundwissen über Shellprogrammierung wäre ab jetzt hilfreich, ist aber nicht unbedingt erforderlich.
Die Komponenten des ffmpeg-Befehls werden in Shell-Variable gepackt und ffmpeg dann mit dem Inhalt all der benötigten Variableninhalte aufgerufen. Erklärendes aber sonst sinnloses Beispiel:
#! /bin/bash
komponente1='-a bcd'
komponente2='-w xvz'
#
ffmpeg $komponente1 $komponente2
Obiges Script erzeugt bei Aufruf diesen Befehl:
ffmpeg -a bcd -w xvz