Hochwertige Aufzeichnung von Vorträgen/ Verpacken der Streams in einen Container

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Verknüpfung der Inputs mit den Outputs[Bearbeiten]

Der -map-Parameter legt fest welcher Audio/Video-Stream der Inputs tatsächlich in die Ausgabedatei geschrieben wird. Dabei wird der entsprechende Stream-Bezeichner (siehe »Zusammenfügen der Videostreams: Spezifizierung der Streams im Filtergraph«) hinter dem -map-Parameter angegeben. Somit können die Inputs direkt in den Output geleitet werden, oder jene, die durch die Filteroptionen modifiziert wurden.

Es ist weiterhin möglich, mehrere Video-Streams in eine Ausgabedatei zu speichern – dies wird allerdings nur von bestimmten Container-Formaten unterstützt (bspw. vom Matroska-Container). Der Nutzen und die dazu nötigen Parameter werden im Kapitel »Verpacken_der_Streams_in_einen_Container«


Und das war auch schon die eigentliche Formatierungsarbeit. Nun muss man nur noch auswählen, welche Streams man in den Video-Container packt. Das geschieht mit dem mapping-Parameter wie folgt:

-map "[bgcamdvi]" -map a:0

Somit wird der zuvor von Filtern formatierte Videostream [bgcamdvi] und der Audiostream a:0 in die Ausgabedatei gelegt. Die Bezeichnung a:0 kann zu Problemen führen, deshalb ist die Indexierung der Inputs, wie in vorangegangenen Kapiteln beschrieben, sicherer.

Zwei Videostreams getrennt in einem Container[Bearbeiten]

Mit vielen Video-Container-Formaten ist es möglich, mehrere Videostreams in einer Datei zu speichern. Die ist beispielsweise für die Archivierung sinnvoll. Man kann jeden ursprünglichen Video- und Audiostream in einer Datei, welche auch zusätzliche Metadaten enthalten kann, zusammen abspeichern und eventuell später weiterverarbeiten. Die verschiedenen Streams lassen sich mit jedem Videobearbeitungsprogramm problemlos extrahieren. Die Streams, die nach der Anleitung "Zwei Videostreams Seite-an-Seite" zu einem Stream verküpft wurden, lassen sich nicht mehr verändern.


Mit ffmpeg wird das Speichern von mehreren Streams durch den -map Parameter realisiert, welchen natürlich auch Filterparameter vorangehen können.

Als Beispiel soll hier folgender Sachverhalt dienen: Es sollen der skalierte Kamerastream mit Audiostream, der Beamerstream in Originalgröße und die beiden zusammengefügten Streams in einem Containerfile abgespeichert werden.

ffmpeg 
-i <(/pfad/zu/bmdcapture -m 10 -V 3 -C 0 -v -F nut -f pipe:foo &) #Kamerastream
-i <(/pfad/zu/bmdcapture -m 12 -V 3 -C 0 -v -F nut -f pipe:bar &) #Beamerstream
#-f alsa -i hw:0
#-c:v libx264 -preset veryfast
#-c:a ac3
-filter_complex "[0:0]scale=634:-1[cam];
                 [1:0]pad=iw:ih:0:0[dvi];
                 [dvi][cam]overlay=0:0[dvicam];"
-map "[dvicam]" -map ["dvi"] -map "[cam]" -map a:0
#outputfile.mkv

ToDo: Welchen Nachteil hat die Container-Variante gegenüber "Zwei Videostreams Seite-an-Seite"