ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

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_logo.png GStreamer 🇬🇧 ist ein Multimedia-Framework, welches das Abspielen, Kodieren, Dekodieren etc. von Audio- und Videodateien ermöglicht. Anders als der Name vermuten lässt, ist GStreamer Desktop-unabhängig. Zwar ist GStreamer seit GNOME 2.2 ein fester Bestandteil dieser Desktop-Umgebung, funktioniert aber auch genauso problemlos mit anderen Desktop-Umgebungen wie KDE oder Xfce. Viele Audio- und Videoplayer können die Fähigkeiten von Gstreamer nutzen, so z.B. Totem, Rhythmbox und Banshee, oder setzen dieses statt eigener Wiedergabe-Routinen ein.

Seit Ubuntu 6.06 Dapper Drake wird unter Ubuntu das GStreamer Framework in der Version 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 Weiterleitungen (Pipelines) verbunden.

Installation

GStreamer ist in der Standardinstallation von Ubuntu enthalten, kann ansonsten aber über das Paket

  • libgstreamer0.10-0

Befehl zum Installieren der Pakete:

sudo apt-get install libgstreamer0.10-0 

Oder mit apturl installieren, Link: apt://libgstreamer0.10-0

installiert werden [1]. Weiterhin sind noch die Pakete

  • gstreamer0.10-tools

  • gnome-media (enthält gstreamer-properties)

Befehl zum Installieren der Pakete:

sudo apt-get install gstreamer0.10-tools gnome-media 

Oder mit apturl installieren, Link: apt://gstreamer0.10-tools,gnome-media

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 u.a. 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 Erweiterungen kann die Ausgabe unter Umständen sehr lang sein. Daher bietet sich an, die Ausgabe durch grep filtern zu lassen [2], 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 Weiterleitungen 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 im 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 Weiterleitungen 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. schnellen Abspielen auf der Kommandozeile gedacht denn als "Konkurrenz" zu den "vollwertigen" Playern. Außerdem kann gst-launch gut in (Shell-) Skripten eingesetzt werden. GStreamer/totem_mit_comiz_manipulation.png

Konfiguration

Wenn man möchte, dass das Video auch dann angezeigt wird, wenn es zum Beispiel von Compiz umgeleitet wird, muss man den gconf-editor 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.

Pipeline

Eine Gstreamer-Pipeline besteht aus mehreren hintereinander geschalteten Elementen. Ein Signal einer Anwendung durchläuft diese und wird an den gewünschten Empfänger (z.B. die Soundkarte) übermittelt. Die Anwendungsmöglichkeiten sind flexibel. Eine Übersicht bietet die ausführliche Dokumentation des Frameworks.

Optionen

GStreamer Optionen
Option Beschreibung
audio/x-raw-int Audiodatei (nicht verändern)
rate=44100,channels=2 Sample-Rate der Audiodatei mit 44100kHz, Stereo (nicht verändern)
! lame name=enc Verwendet den LAME MP3 Codec (nicht verändern)
mode= Encoder Modus (0: Stereo; 1: Joint Stereo; 2: Dual Channel; 3: Mono; 4: Auto)
quality= Qualität des verwendeten Algorithmus zum encoden ( von 0-9, wobei 0 am besten ist, 9 am schlechtesten)
vbr= Werte von 0 -4, wobei 0 kein VBR heißt, 2 ein älterer Algorithmus ist, 3 VBR Average Bitrate und 4 der neue/schnelle LAME VBR-Modus (empfohlen)
vbr-quality= VBR-Bitrate. 0 ist am höchsten (245-285 kbps), 9 am niedrigsten (45-85 kbps). Empfohlen wird 2 (170 - 210 kbps)
preset= {1001, 1002, 1003, 1006} LAME-Presets: 1001 = Standardeinstellung - entspricht vbr-quality=2, 1002 entspricht vbr-quality=0), 1003 entspricht 320KB-CBR, 1006 entspricht vbr-quality=4
bitrate= Bitrate (nur nötig, falls vbr=0). Empfohlener Wert: 192
! xingmux Diese Option sollte nicht verändert werden, damit die korrekten Informationen zur variablen Bitrate und Titellänge in die MP3-Datei geschrieben werden.
! id3v2mux Zum Schreiben von ID3v2.4 Tags (nicht verändern)

Beispiele

MP3s mit einer festen Bitrate von 192 kbps erstellen

audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=1 quality=2 vbr=0 bitrate=192 ! xingmux ! id3v2mux
MP3s mit VBR ~190kbps erstellen

audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=1 quality=2 vbr=4 vbr-quality=2 ! xingmux ! id3v2mux

Diese Revision wurde am 22. Februar 2011 21:53 von march erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Multimedia, Video