Hochwertige Aufzeichnung von Vorträgen/ Der Befehl und das Script

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Der Befehl und das Script[Bearbeiten]

Der 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[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 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[Bearbeiten]

Die 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