GStreamer

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
GStreamer
Image illustrative de l'article GStreamer
Logo

Dernière version 1.2 () [+/-]
Environnements Multiplate-forme
Langues Multilingue
Type Framework multimédia
Licence Licence libre : GNU LGPL
Site web gstreamer.freedesktop.org

GStreamer est une bibliothèque logicielle de manipulation de sons et d'images (appelée aussi framework multimédia) distribué sous licence libre, écrite en C, initialement développée pour proposer une solution capable de concurrencer QuickTime et DirectShow sur GNU/Linux[1]. Sa première version publique date du . C'est un projet freedesktop.org.

Il a été rapidement adopté par le projet GNOME (dès la version 2.2 de ce dernier, sortie en février 2003) dont il est devenu un pilier (Totem, Rhythmbox et Pitivi, par exemple, en tirent largement parti). Il est également utilisé par Phonon, la couche d'abstraction multimédia de KDE4.

Il a ensuite commencé à être utilisé sous Windows et MacOS : c'est ainsi que Songbird se base dessus pour proposer des versions fonctionnant sous ces différentes plateformes, de même qu'Opera repose dessus à partir de sa version 10.5 pour afficher l'élément vidéo de HTML5 sous Windows, GNU/Linux et FreeBSD[2].

Pour faciliter les usages commerciaux de GStreamer, Fluendo (en) et Collabora (en) ont œuvré ensemble à la création d'un SDK multiplateforme (GNU/Linux, Windows et Mac OS X pour la première version nommée Amazon qui est sortie le 7 juin 2012[3], puis Android avec la version Brahmaputra sortie le 28 novembre 2012 et iOS avec la version Congo sortie le 12 juin 2013).

Fonctionnement technique[modifier | modifier le code]

GStreamer repose sur un fonctionnement en pipeline qui rappelle les tubes sous Unix : les éléments sont connectés entre eux via des tubes. Mais avec GStreamer, le type d’un flux passant par un tube est connu des éléments (le format de sortie et d’entrée n’a pas à être spécifié au niveau de chaque élément). On peut également dupliquer un flux la commande tee.

Exemples[modifier | modifier le code]

Lecture d'un fichier audio[modifier | modifier le code]

Voici un pipeline qui va permettre la lecture du fichier audio « mon_son.ogg » – consistant en un son compressé avec le codec Vorbis et présenté dans un format conteneur Ogg – en faisant appel au serveur de sons PulseAudio (dans cet exemple, le greffon « filesrc » permet de déclarer le fichier source, « oggdemux » permet de démultiplexer (en) le fichier, « vorbisdec » de le décoder et « pulsesink » d'envoyer le résultat à PulseAudio) :

gst-launch filesrc location=mon_son.ogg ! oggdemux ! vorbisdec ! pulsesink

L'exemple précédent peut être simplifié en laissant GStreamer détecter lui-même la nature du conteneur et du codec, au moyen du greffon « decodebin » :

gst-launch filesrc location=mon_son.ogg ! decodebin ! pulsesink

Il est même possible de laisser GStreamer détecter lui-même le serveur de sons en utilisant le greffon « autoaudiosink » :

gst-launch filesrc location=mon_son.ogg ! decodebin ! autoaudiosink

Lecture d'un fichier audio-vidéo[modifier | modifier le code]

Voici un pipeline qui va permettre la lecture du fichier audio-vidéo WebM « ma_vidéo.webm » (dans cet exemple, le greffon « decodebin » est affublé d'un nom quelconque – ici « foo » – pour pouvoir être réutilisé par chaque pipe – un pour traiter le flux vidéo, l'autre pour traiter le flux audio – qui est mis en attente à l'aide du greffon « queue » pour que les deux parties soient jouées en même temps) :

gst-launch filesrc location=ma_vidéo.webm ! decodebin name=foo \
foo. ! queue ! autovideosink \
foo. ! queue ! autoaudiosink

Transcodage d'un fichier audio-vidéo[modifier | modifier le code]

Voici un pipeline qui va permettre le transcodage d'un fichier mp4 (contenant généralement une partie vidéo compressée avec le codec H.264 et une partie audio compressée avec le codec AAC, mais c'est sans importance dans cet exemple où nous laissons le greffon « decodebin » s'occuper de tout ça comme nous l'avons vu précédemment) en fichier ogv associant les codecs Vorbis et Theora respectivement pour l'audio et la vidéo (le greffon « decodebin » est de nouveau affublé d'un nom, « foo », pour pouvoir être réutilisé dans chacun des pipes audio et vidéo, de même ici que le greffon « oggmux » qui est nommé pour l'occasion « bar » et qui va permettre de multiplexer les parties audio et vidéo) :

gst-launch filesrc location=ma_vidéo.mp4 ! decodebin name=foo \
foo. ! queue ! vorbisenc ! oggmux name=bar \
foo. ! queue ! theoraenc ! bar. \
bar. ! filesink location=ma_vidéo.ogv

Greffons[modifier | modifier le code]

GStreamer adopte un système de greffons regroupés sous les appellations « Good », « Bad » et « Ugly » selon le support qui leur est accordé, support qui est défini[4] en fonction de la qualité du greffon lui-même, sa licence et d’autres choses :

  • les greffons « Good » sont de bonne qualité et très bien supportés,
  • les greffons « Bad » sont ceux dont la qualité n’est pas assurée parce qu’ils sont soit peu utilisés, soit peu testés, soit peu maintenus ou tout simplement parce que leur support n’est pas prioritaire,
  • les greffons « Ugly » sont des greffons de bonne qualité mais dont la redistribution est problématique.

Pour l’anecdote, ce nommage en « Good », « Bad », et « Ugly » est inspiré du titre anglais d’un célèbre film de Sergio Leone : Le Bon, la Brute et le Truand (The Good, the Bad and the Ugly)[5].

Historique[modifier | modifier le code]

La série 0.8 a été lancée en mars 2004, rapidement suivie par la série 0.10, lancée en décembre 2005, qui signe véritablement la maturité du framework.

La version 1.0, sortie le 24 septembre 2012[6], succède à la version 0.10. Cette version est conçue pour pouvoir coexister avec la précédente sur un même système afin de faciliter la transition.

La version 1.2, sortie le 24 septembre 2013[7], prend notamment en charge l'accélération matérielle par le processeur graphique du décodage (via la bibliothèque gstreamer-vaapi en version 0.5.7 ou supérieure)[8] voire du codage vidéo (à partir de la version 0.5.8 de gstreamer-vaapi) pour certains codecs et processeurs. Des logiciels comme Totem, Pitivi ou encore Epiphany (dont le moteur WebKitGTK+ utilise GStreamer pour afficher la vidéo nativement dans le navigateur) peuvent en tirer profit.

Logiciels utilisant GStreamer[modifier | modifier le code]

Référence[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Lien externe[modifier | modifier le code]