[[Vorlage(Getestet, jammy, focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(./gstreamer_logo.png, align=left)]] [: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]: {{{#!vorlage Paketinstallation libgstreamer1.0-0 }}} Empfehlenswert ist weiterhin noch das Paket: {{{#!vorlage Paketinstallation gstreamer1.0-tools, in [:Jammy:] in der Standardinstallation bereits enthalten }}} 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 [:Codecs#Fluendo: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: {{{#!vorlage Befehl 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.: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl gst-launch-1.0 filesrc location=~/musik.mp3 ! mad ! pulsesink }}} Als weiteres Beispiel ein einfacher Test der Videoausgabe: {{{#!vorlage Befehl gst-launch-1.0 videotestsrc ! autovideosink }}} Geht es um das reine Abspielen von Multimedia-Dateien, kann man auch folgenden Befehl nutzen: {{{#!vorlage Befehl 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 1. 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): {{{#!vorlage Befehl 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 [wikipedia: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: {{{#!vorlage Befehl 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 [:man:Manpage] zu gst-launch-1.0. ##aasche: ungetestet ##[[Bild(./totem_mit_compiz_manipulation.png, 200, align=right)]] ##== Compiz == ##Wenn man möchte, dass ein Video auch dann angezeigt wird, wenn es zum Beispiel von [:Compiz:] umgeleitet wird, muss man den [:GNOME_Konfiguration/dconf:dconf-editor] starten und den Schlüssel ''"/system/gstreamer/1.0/default/videosink"'' in ''"ximagesink"'' ändern. Dann werden Videos, die von Totem oder anderen Playern, die GStreamer benutzen, umgeleitet, so dass man sie auch sehen kann, wenn das Fenster manipuliert wird. == 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 }}} {{{#!vorlage Tabelle <-2 tablestyle="width: 97%;" rowclass="titel"> 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 = * [https://gstreamer.freedesktop.org/documentation/ Dokumentation] {en} - die offizielle GStreamer-Dokumentation * [man:gst-launch-1.0:] {en} - Manpage zu gst-launch * [github:UbiCastTeam/gst-gtklaunch-1.0:gst-gtklaunch-1.0] {en} - grafisches Werkzeug zum Testen von Pipelines * [:Codecs#Fluendo:Fluendo - kommerzielle Codecs für GStreamer kaufen] * [:GStreamer:] - Hauptartikel # tag: Multimedia, Video