<p class="spip">Gstreamer est un framework freedesktop permettant de décoder ou encoder de la musique et de la vidéo. gst-launch est un outil qui permet de construire et de jouer des pipelines GStreamer. Ce document est orienté audio, mais il est possible de faire le même genre de chose avec la vidéo.</p>

<h2>Introduction a gst-launch</h2>
<p class="spip">Pour commencer, nous allons écouter un fichier ogg/vorbis grâce à gst-launch, pour cela nous tappons :</p>

<p class="spip"><code class='spip_code' dir='ltr'>gst-launch filesrc location=musique.ogg ! vorbisfile ! osssink</code></p>

<p class="spip">Nous demandons ici de lire un fichier (filesrc) situé dans le répertoire courant avec le nom musique.ogg. Ce fichier est lu dans un pipe vorbisfile et envoyé dans la sortie audio osssink.</p>

<p class="spip">Approfondissons chacune des options :</p>

<li> à la place de filesrc, il est possible de mettre httpsrc, ... ou plus simplement gnomevfssrc qui permet d’accéder au fichier en utilisant gnomevfs (file, http, ftp, smb ...).
<li> vorbisfile désigne les fichiers vorbis, mad pour mp3, wavparse pour wav, ... spider permet de ne pas déterminer le type. GStreamer se débrouillera tout seul.
<li> osssink est la sortie audio (utilisant ici oss), il est possible de mettre alsasink, esdsink, artsdsink, ...
<h2>gst-launch pour ripper un cédérom audio</h2>
<p class="spip">Commençons par lire le cédérom audio avec gst-launch.</p>

<p class="spip">J’utilise l’outil gst-inspect pour tenter de trouver le greffon utile à la lecture du cédérom audio :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code># gst-inspect<br />
[...]<br />
cdparanoia:  cdparanoia: CD Audio (cdda) Source, Paranoia IV<br />
[...]<br />
</code></div>
<p class="spip">Dans la longue liste de greffons, je remarque cdparanoia. Je lance donc gst-launch avec ce greffon et avec comme sortie ma carte son oss :</p>

<p class="spip"><code class='spip_code' dir='ltr'># gst-launch cdparanoia ! osssink</code></p>

<p class="spip">Il est possible de convertir un cédérom dans un seul fichier mp3. En jouant avec les pipes, nous n’avons qu’à faire :</p>

<p class="spip"><code class='spip_code' dir='ltr'># gst-launch cdparanoia ! mpegaudio ! filesink location=cd.mp3</code></p>

<p class="spip">Ici, nous envoyons le contenu du cédérom audio vers le convertisseur mpegaudio et enfin vers la sortie audio ’fichier’ cd.mp3.</p>

<h2>gst-launch pour convertir un mp3 en ogg</h2>
<p class="spip">Avec les pipes, il est facile de faire ce genre de chose :</p>

<p class="spip"><code class='spip_code' dir='ltr'># gst-launch filesrc location=music.mp3 ! mad ! vorbisenc ! filesink location=musique.ogg</code></p>

<p class="spip">Il est possible de jouer avec les options de vorbisenc. Commençons par lister toutes les options disponibles :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code># gst-inspect vorbisenc<br />
[...]<br />
quality             : Specify quality instead of specifying a particular bitrate.<br />
[...]<br />
</code></div>
<p class="spip">Nous voyons qu’il est possible de jouer avec la qualité du ogg/vorbis. Nous allons donc faire, par exemple :</p>

<p class="spip"><code class='spip_code' dir='ltr'>gst-launch filesrc location=music.mp3 ! mad ! vorbisenc quality=0.5 ! filesink location=musique.ogg</code></p>

<p class="spip">Il faut bien comprendre que gst-launch n’est pas fait réellement pour être utilisé. En effet gstreamer est plus une boîte à outil multimédia. Des bibliothèques pour un grand nombre de langage existent déjà (C, C++, python, ruby ...). Il est déjà utilisé par un grand nombre de projets libres.</p>

<h2>Encoder en mp3 des cédéroms avec sound-juicer</h2>
<p class="spip">Sound-juicer, dans ses dernières versions, ne permet pas d’encoder en mp3 directement. Voici comment rajouter cette fonctionnalité :</p>

<p class="spip">Lancer gnome-audio-profiles-properties et ajouter un nouveau profil :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>Nom du profil: Qualité CD, mp3<br />
Description du profile : Test<br />
Pipeline GStreamer : audio/x-raw-int,rate=44100,channels=2 ! lame name=enc<br />
Extension du fichier : mp3</code></div>
<p class="spip">Et voilà :)</p>