ubuntuusers.de

Gstreamer-1.0

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_logo.png 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. Dateiname

  • vorbisdec ist der zu benutzende Decoder

  • autoaudiosink 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

  1. stets der volle Pfad angegeben wird (auch, wenn man sich im Verzeichnis mit der Datei befinden sollte) und

  2. 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.

Diese Revision wurde am 29. Januar 2023 17:17 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Multimedia, Video