Mehrfachvideo mit Gstreamer
Der wetter meinte neulich, es könnte doch ganz nützlich sein, mehrere Videostreams in einem Container zu verkapseln; auf diese Weise wäre es etwa bei Vorträgen möglich, eine Ansicht mit Folien und eine weitere mit den Dozenten zu haben. Glücklicherweise geht das tatsächlich.
Um ein derartiges Video zu erhalten, habe ich zunächst mit Gstreamer ein Testbildvideo produziert (dieser Blogeintrag war sehr hilfreich) und dieses dann mit Hilfe der oggz-tools auf 20 Sekunden geschnitten und mit einem von mir vorher aufgenommenen Video zu einem zweispurigen Video (Download) gemixt:
gst-launch-0.10 videotestsrc ! video/x-raw-yuv,width=640,height=480 ! ffmpegcolorspace ! theoraenc bitrate=500 ! oggmux ! filesink location=testbild.ogv ^C oggz-chop -o testbild-20s.ogv -e 20 testbild.ogv oggz-merge -o testbild-stereo.ogv MD000410.ogv testbild-20s.ogv
Schneller kann man ein eigenes Video mit zwei Testbildern mit folgendem Pipelinemonster erstellen:
gst-launch-0.10 videotestsrc pattern=circular ! queue ! videorate ! video/x-raw-rgb,rate=15/1 ! ffmpegcolorspace ! theoraenc ! oggmux name=mux ! filesink location=testbild2.ogv videotestsrc ! queue ! videorate ! video/x-raw-rgb,rate=15/1 ! ffmpegcolorspace ! theoraenc ! mux. ^CTestweise abspielen kann man dieses dann wiederum mit:
gst-launch-0.10 filesrc location=testbild2.ogv ! decodebin name=d ! queue ! xvimagesink d. ! queue ! xvimagesink
Ein praktisches Problem derartiger Dateien ist die Behandlung der Videostreams durch gewöhnliche Abspielsoftware, die im Allgemeinen davon ausgeht, dass verschiedene Streams gleichen Typs nicht gleichzeitig abgespielt werden sollen: Nur VLC media player öffnet für jeden Videostream ein weiteres Fenster, während Totem, mplayer und Webbrowser mit Unterstützung für das <video/>-Element jeweils immer nur einen der beiden Videostreams anzeigen — im besten Fall ist ein Wechsel des abgespielten Streams möglich, ähnlich dem Wechsel der ausgewählten Audiospur.
Das obige, mit oggz-merge erstellte Video ist laut oggz-validate leider nicht valide, ein guter Grund für ein Abspielprogramm, den Dienst zu verweigern. Ein valides, mit der Gstreamer-Monsterpipeline erstelltes Video findet ihr hier.
Ich werd nicht mehr: Das valide Video wird zwar immer noch von der passenden Gstreamer-Pipeline abgespielt, VLC hingegen stürzt in den meisten Fällen ab — oder versagt sowas von komplett …
So, das valide Testvideo hat jetzt zwei unterschiedliche Streams, einer zeigt jetzt konzentrische Kreise. Nur, damit niemand verwirrt wird.
Einen Kommentar hinterlassen