GStreamer
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
GStreamer 🇬🇧 ist ein Multimediaframework, dass das Abspielen, Codieren, Decodieren etc. von Audio- und Videodateien ermöglicht. Anders als der Name vermuten lässt ist ist GStreamer Desktop-unabhängig. Zwar ist GStreamer seit Gnome 2.2 ein fester Bestandteil der Desktopumgebung, funktioniert aber auch genauso problemlos mit anderen Desktopumgebungen wie z.B. KDE oder auch Xfce. Viele Audio- und Videoplayer können die Fähigkeiten von Gstreamer nutzen, so z.B. Totem, Rhythmbox, Banshee und Juk. Amarok unterstützt in der Version 1.4 GStreamer leider nicht mehr.
Seit Ubuntu 6.06 wird unter Ubuntu das aktuelle GStreamer Framework 0.10.x eingesetzt.
Konzept von GStreamer¶
GStreamer ist prinzipiell modular aufgebaut und arbeitet dreistufig. Es gibt die Eingabe, welche GStreamer "Source" nennt, den Filter / Transformer (z.B. den Ogg Vorbis Decoder zum Abspielen von .ogg Audio Dateien) und die Ausgabe, welche GStreamer "Sink" nennt. Alle drei Stufen werden über Plugins realisiert und sind somit grundsätzlich (beliebig) erweiterbar. Die Blöcke sind über so genannte Pipelines verbunden.
Installation¶
GStreamer ist in der Standardinstallation von Ubuntu enthalten, kann ansonsten aber über das Paket
libgstreamer0.10-0
installiert werden [1]. Weiterhin sind noch die Pakete
gstreamer0.10-tools
gnome-media (enthält gstreamer-properties)
sinnvoll.
Um Multimedia Dateien abzuspielen bzw. zu kodieren benötigt man noch ein entsprechendes Plugin, welches den Decoder / Encoder enthält. Die GStreamer Plugins sind im Artikel Codecs beschrieben. Codecs für GStreamer, die lizenzrechtlich geschützt sind, können im Fluendo Webstore 🇬🇧 gekauft und heruntergeladen werden.
Nutzung¶
Nutzt man ein Audio- oder Videoprogramm, welches GStreamer im Backend einsetzt, so verwendet man GStreamer, ohne direkt auf GStreamer zuzugreifen. Durch den Aufruf des Hilfsprogramms gstreamer-properties [3] kann man jedoch die Vorgabe für die Eingabe (Source) und Ausgabe (Sink) getrennt für Audio und Video mittels eine graphischen Benutzeroberfläche auswählen.
Möchte man Wissen, welche Module / Plugins für GStreamer installiert sind, so ruft man im Terminal [2] folgenden Befehl auf:
gst-inspect-0.10
Je nach Anzahl der installierten Plugins kann die Ausgabe unter Umständen sehr lang sein. Daher bietet sich an, die Ausgabe durch grep filtern zu lassen, z.B.:
gst-inspect-0.10 | grep src # gibt alle installierten Sources aus gst-inspect-0.10 | grep sink # gibt alle installierten Sinks aus gst-inspect-0.10 | grep encode # gibt alle installierten Encoder aus gst-inspect-0.10 | grep decode # gibt alle installierten Decoder aus gst-inspect-0.10 | grep play # gibt alle installierten GStreamer-eigenen Player aus
Man kann GStreamer auch ohne graphische Benutzeroberflächen nutzen, also ohne die oben genannten Audio- /Videoplayer. Dazu dient der Befehl gst-launch-0.10 mit welchem sich (fast) beliebige Pipelines bauen lassen. Hier ein einfaches Beispiel:
Es soll die Datei musik.ogg wiedergegeben werden, welche im Homeverzeichnis liegt. Diese lässt sich mit folgendem Befehl realisieren [2]:
gst-launch-0.10 filesrc location=~/musik.ogg ! vorbisdec ! alsasink
filesrc location=
gibt dabei den Pfad inkl. Dateiname an, vorbisdec
den zu benutzenden Decoder, alsasink
die Ausgabe. Das Ausrufezeichen ! signalisiert GStreamer, das als nächstes ein neues Element der Pipeline definiert wird.
Kennt man den Codec der abzuspielenden Datei nicht (z.B. bei Videos), so kann man als Dekoder auch decodebin
einsetzen. dann versucht GStreamer, anhand des Dateiheaders den Codec zu "erraten" und benutzt - sofern installiert - den passenden Decoder.
Geht es um das reine Abspielen von Audio- bzw. Videodateien, so kann man auch folgenden Befehl nutzen:
gst-launch-0.10 playbin uri=file:///pfad/zur/datei/music.ogg
Wichtig ist dabei, dass immer der volle Pfad angegeben wird (auch, wenn man sich im Verzeichnis der Datei befinden sollte) und die Einleitung mit uri=file://
Die oben gegebenen Beispiele funktionieren von Prinzip genau so mit Videodateien.
Darüber hinaus lassen sich mit dem Befehl gst-launch-0.10 ...
noch viele andere Dinge realisieren wie z.B. Videos eincodieren, Muxen / Demuxen, CDs rippen etc. Die Pipelines können dabei (fast) beliebig komplex sein. Einige Beispiele bietet hier auch die Manpage zu gst-launch.
Im Vergleich zu "vollwertigen" Audio- / Videoplayern etc. ist GStreamer an sich unkomfortabler, da gst-launch z.B. keine Parameter / Optionen für die Decoder / Encoder kennt. Allerdings sind die bei GStreamer mitgelieferten Werkzeuge auch eher zum Testen bzw. schneller Abspielen auf der Kommandozeile gedacht denn als "Konkurrenz" zu den "vollwertigen" Playern. Außerdem kann gst-launch auch gut in (Shell-) Skripten eingesetzt werden.
Konfiguration¶
Wenn man möchte, dass das Video auch dann angezeigt wird, wenn es zum Beispiel von Compiz umgeleitet wird, muss man das gconf-tool starten und den Schlüssel /system/gstreamer/0.10/default/videosink in ximagesink ändern. Dann werden Videos, die von Totem oder anderen Playern, die GStreamer benutzen, umgeleitet, sodass man sie auch sehen kann, wenn das Fenster manipuliert wird.
Links¶
Dokumentation 🇬🇧 - die offizielle GStreamer Dokumentation
Anwendungsliste 🇬🇧 - welche Anwendungen GStreamer nutzen
Manpage 🇬🇧 - die Manpage zu gst-launch online und mit farbigen Hervorhebungen
Fluendo Webstore 🇬🇧 - kommerzielle Codecs für GStreamer kaufen
Audiostreams aufnehmen 🇩🇪 mit Hilfe von GStreamer und PulseAudio