Gstreamer-1.0
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
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 Multimedia-Framework, welches das Abspielen, Kodieren, Dekodieren etc. von Audio- und Videodateien ermöglicht. Dieser Artikel widmet sich ausschließlich der Version 1.0 oder neuer.
Installation¶
GStreamer ist in der Standardinstallation von Ubuntu enthalten, kann ansonsten aber über das folgende Paket installiert werden [1]:
libgstreamer1.0-0
Befehl zum Installieren der Pakete:
sudo apt-get install libgstreamer1.0-0
Oder mit apturl installieren, Link: apt://libgstreamer1.0-0
Empfehlenswert ist weiterhin noch das Paket:
gstreamer1.0-tools (in Jammy in der Standardinstallation bereits enthalten)
Befehl zum Installieren der Pakete:
sudo apt-get install gstreamer1.0-tools
Oder mit apturl installieren, Link: apt://gstreamer1.0-tools
Um später Multimedia-Dateien abzuspielen bzw. zu kodieren, benötigt man noch ein entsprechendes Plugin, welches den konkreten Decoder/Encoder enthält. Die einzelnen GStreamer-Plugins sind im Artikel Codecs beschrieben. Codecs für GStreamer, die lizenzrechtlich geschützt sind, können u.a. im Fluendo Webstore gekauft und heruntergeladen werden.
Nutzung¶
Möchte man wissen, welche Module/Plugins für GStreamer installiert sind, führt man im Terminal [2] aus:
gst-inspect-1.0
Da die Ausgabe nach Anzahl installierter Erweiterungen sehr lang sein kann, bietet es sich an, sie durch grep filtern zu lassen, bspw.:
gst-inspect-1.0 | grep src ## gibt alle installierten Sources aus gst-inspect-1.0 | grep sink ## gibt alle installierten Sinks aus gst-inspect-1.0 | grep encode ## gibt alle installierten Encoder aus gst-inspect-1.0 | grep decode ## gibt alle installierten Decoder aus gst-inspect-1.0 | grep play ## gibt alle installierten GStreamer-eigenen Player aus
Man kann GStreamer auch ohne grafische Benutzeroberflächen nutzen, also ohne die eingangs genannten Audio-/Videoplayer. Dazu dient der Befehl gst-launch-1.0
, mit dem sich (fast) beliebige Pipelines bauen lassen. Hier ein einfaches Beispiel: Es soll die Datei musik.ogg wiedergegeben werden, die sich im Homeverzeichnis befindet:
gst-launch-1.0 filesrc location=~/musik.ogg ! vorbisdec ! autoaudiosink
filesrc location=
ist der Pfad inkl. Dateinamevorbisdec
ist der zu benutzende Decoderautoaudiosink
die Ausgabe (wird in diesem Fall automatisch ermittelt)
Das Ausrufezeichen !
signalisiert GStreamer, dass als nächstes ein neues Element der Pipeline definiert ist. Kennt man den Codec der abzuspielenden Datei nicht (z.B. bei Videos), kann man als Decoder auch decodebin
einsetzen. GStreamer liest den im Fileheader gelesenen Codec und nutzt so - sofern installiert - den passenden Decoder.
Das nächste Beispiel spielt eine MP3-Datei via PulseAudio ab:
gst-launch-1.0 filesrc location=~/musik.mp3 ! mad ! pulsesink
Als weiteres Beispiel ein einfacher Test der Videoausgabe:
gst-launch-1.0 videotestsrc ! autovideosink
Geht es um das reine Abspielen von Multimedia-Dateien, kann man auch folgenden Befehl nutzen:
gst-launch-1.0 playbin uri=file:///PFAD/ZUR/DATEI/video.mpg
Wichtig ist dabei, dass
stets der volle Pfad angegeben wird (auch, wenn man sich im Verzeichnis mit der Datei befinden sollte) und
die Einleitung mit "
uri=file://
"
Darüber hinaus lassen sich mit dem Befehl gst-launch-1.0 ...
noch viele andere Dinge realisieren, z.B. Videos rekodieren, Muxen/Demuxen, CDs rippen etc. Die Weiterleitungen können dabei (fast) beliebig komplex sein. Im Vergleich zu "vollwertigen" Audio-/Videoplayern etc. ist GStreamer an sich unkomfortabel, da gst-launch z.B. keine oder nur wenige Parameter/Optionen für die Decoder/Encoder kennt. Allerdings sind die bei GStreamer mitgelieferten Werkzeuge auch eher zum Testen bzw. schnellen Abspielen auf der Kommandozeile gedacht und nicht als Ersatz für andere Programme. Außerdem kann gst-launch-1.0 gut in der Shell oder entsprechenden Skripten eingesetzt werden.
Zwei praktische Beispiele (eine Befehlszeile, der Übersichtlichkeit wegen umgebrochen):
FLAC in MP3 umwandeln (es werden alle .flac-Dateien des aktuellen Ordners in das MP3-Format umgewandelt):
for i in *.flac; do gst-launch-1.0 filesrc location="$i" ! \\ decodebin ! \\ audioconvert ! \\ lamemp3enc target=quality quality=0 ! \\ xingmux ! \\ id3v2mux ! \\ filesink location="${i%.flac}.mp3"; done
OGG in MP3 umwandeln: Da eine Umwandlung durch den auftretenden Generationsverlust problematisch ist, sollte das Ausgangsmaterial zumindest eine möglichst hohe Bitrate aufweisen. Es werden alle .ogg-Dateien des aktuellen Ordners in das MP3-Format umgewandelt:
for i in *.ogg; do gst-launch-1.0 filesrc location="$i" ! \\ decodebin ! \\ audioconvert ! \\ lamemp3enc target=quality quality=0 ! \\ xingmux ! \\ id3v2mux ! \\ filesink location="${i%.ogg}.mp3"; done
Weitere Beispiele bietet die Manpage zu gst-launch-1.0.
Beispiele¶
Im folgenden Abschnitt werden einige Beispiele für GStreamer-Pipelines vorgestellt (Ein- und Ausgabe sind nicht berücksichtigt).
MP3s mit einer festen Bitrate (CBR) von 192 kbps erstellen:
lamemp3enc target=bitrate bitrate=192 cbr=true ! id3v2mux
MP3s mit einer variablen Bitrate (VBR) von ~190kbps erstellen:
lamemp3enc target=quality quality=2 ! xingmux ! id3v2mux
Audio-Optionen für MP3 | |
Option | Beschreibung |
! lamemp3enc | Verwendet den MP3-Codec (siehe LAME) |
quality=N | Qualität des verwendeten Algorithmus zum Encoden (N von 0 -9 , wobei 0 am besten ist, 9 am schlechtesten) |
bitrate=N | Bitrate. Empfohlener Wert für N : 192 oder größer |
cbr=true/false | Konstante Bitrate aktivieren |
! xingmux | Diese Option sollte nicht verändert werden, damit die korrekten Informationen zur variablen Bitrate (VBR) und Titellänge in die MP3-Datei geschrieben werden. |
! id3v2mux | Zum Schreiben von Metadaten (ID3v2.4 Tags). Nicht verändern! |
Problembehebung¶
gstreamer-properties¶
Das grafische Hilfsprogramm gstreamer-properties ist ausschließlich Bestandteil der Version 0.10 und steht für die Version 1.0 von GStreamer nicht zur Verfügung.
Links¶
Dokumentation 🇬🇧 - die offizielle GStreamer-Dokumentation
gst-launch-1.0 🇬🇧 - Manpage zu gst-launch
gst-gtklaunch-1.0 🇬🇧 - grafisches Werkzeug zum Testen von Pipelines
GStreamer - Hauptartikel