GStreamer es una biblioteca que sirve como capa de abstracción para un chorro de codecs de audio y vídeo en los escritorios Linux. Es genial en el sentido de que hace trivial el hecho de que una aplicación pueda leer distintos formatos.
A la hora de extraer audio de CDs, nos encontramos con un problema: Elegir el perfil de audio.

¿Qué es un perfil de audio?

Básicamente es dar un nombre y descripción "legible para humanos" a una tubería (o pipeline) de GStreamer.

Aaaam ahora lo tengo todo claro... no, en serio, ¿qué es una tubería o pipeline de GStreamer?

Básicamente le indica a GStreamer cómo tiene que entrar el vídeo o audio, qué debe hacer con él, y cómo debe de salir.

¿Qué aspecto tiene?

Algo así:

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

¿Comoooorr?

Vale, vayamos por partes.

  • El signo de exclamación es el equivalente al "|" en la consola, coge la salida del comando anterior y lo manda a la entrada del siguiente.
  • En la primera parte indicas que es audio y qué tipo.
  • En la segunda usas el plugin LAME, para transformar a MP3. LAME tiene sus peculiaridades. Lo que hacemos aquí es:
  • name=enc le da un nombre al objeto. Realmente no tengo muy claro que sea necesario, pero si venía así por algo será...
  • mode=0 significa que la pista es estéreo.
  • vbr=4 hace que usemos el algoritmo nuevo de LAME para codificar en VBR.
  • vbr-quality=4 simplemente es una escala del 0 (mejor) al 9 (peor) para ver la calidad del audio que queremos sacar
  • La penúltima parte (xingmux) arregla una cosa que se llaman xing headers del mp3. Se usan cuando el mp3 tiene bitrate variable (VBR, saca mayor calidad en menor espacio).
  • id3v2mux le aplica las etiquetas ID3 al fichero creado.
  • ¿Y cómo sabes tú eso?

    Fácil, abre una terminal y escribe:
    gst-inspect-0.10 lame | less

    Lo de less no hace falta pero te facilita la lectura. Para salir pulsa q.

    Empiezo a entenderlo... ¿Entonces es esto lo que tengo que hacer para codificar mp3?

    Pues me alegro de que empieces a entenderlo, pero no es esto lo que deberías hacer.
    Verás, el complemento lame que hemos usado es el que viene configurado en distros como Debian o Ubuntu, pero si echamos un vistazo a la documentación oficial de GStreamer respecto a codificar mp3, veremos que este ha quedado obsoleto. Ahora se usa el complemento lamemp3enc.

    Jo, ahora que me conocía este...

    Tranquilo, este complemento es mucho más fácil de usar y aprender. Esta es la tubería que uso yo:

    audio/x-raw-int,rate=44100,channels=2 ! lamemp3enc ! xingmux ! id3v2mux

    Como ves, ni siquiera le he puesto ningún parámetro, porque los que trae por defecto son básicamente los que hemos puesto arriba con el complemento antiguo.

    ¿Me explicas entonces el lamemp3enc?

    No. Ya te he explicado el otro, y este funciona igual pero con distintos parámetros. Piensa un poco y averiguarás dónde encontrar dichos parámetros.

    Como nota adicional, este artículo también puede interesarte.
    Sé feliz ;)