28 oct. 2011

[Howto] Convirtiendo archivos de audio con Gstreamer

En este pequeño howto explicare como convertir ficheros de audio (o la pista de audio de un vídeo) con Gstreamer.
Para los que no sepan que es Gstreamer son unas librerías para trabajar con audio y video y usadas por muchos programas como VLC, FFMPEG, Mencoder/Mplayer, etc.

Para empezar necesitamos tener instalado Gstreamer (los usuarios de Linux basta con instalarlo desde los repositorios de nuestra distro favorita). Decir que la libreria base solo trabaja con ficheros de código abierto (como OGG o Flac) por lo que necesitaremos de otras para trabajar con mp3 o aac. Por norma general basta con tener instalado:

  • Gstreamer
  • Gstreamer-bad
  • Gstreamer-good

Para trabajar con el abrimos una terminal o consola de comandos si usas windows.
Por ejemplo con esto podremos reproducir un fichero de audio:
gst-launch-0.10 filesrc location=fichero.mp3 ! decodebin ! alsasink

Vamos a analizar la linea:
la primera es filesrc y mediante el parámetro location le indicamos la ruta al archivo que se va a usar, decodebin se encarga de descodificar el fichero de audio y por ultimo alsasink se encarga de sincronizar el audio y sacarlo por los altavoces (si usas oss, pulseaudio, etc mira mas abajo para conocer el comando de ayuda). Ademas cada parte esta separada por un ! cada modulo

Con esa simple linea podemos reproducir un fichero de audio, pasemos ahora a como convertirlo.

Para convertir un fichero de audio en otro necesitamos invocar a tres modulos que son el codificador, el encargado de insertar las cabeceras del fichero (o muxer) y el que ira grabado todo en el fichero de salida.

Para convertir un fichero a mp3 usaremos la siguiente linea:
gst-launch-0.10 filesrc location=fichero.ogg ! decodebin ! lame bitrate=160 ! id3v2mux ! filesink location=salida.mp3

Los dos primeros módulos son como el primer ejemplo, luego pasamos a usar el coder Lame (el codec libre de mp3 mas popular) al que le pasamos el parámetro bitrate, en este caso 160 para que el audio tendrá una calidad buena (lo mínimo recomendado es 128). Si la calidad del audio original es menor no mejorara su calidad.
Luego añadimos las etiquetas ID3 (si el fichero original las tiene) y por ultimo le indicamos donde se guardara el fichero resultante.

Para OGG seria lo siguiente:
gst-launch-0.10 filesrc location=fichero.mp3 ! decodebin ! vorbisenc ! oggmux! filesink location=salida.ogg

No es muy complicado convertir ficheros de audio una vez leída la documentación pertinente. Si queremos saber las opciones de Gstreamer usaremos el comando gst-inspect para obtener la lista de módulos disponibles y para saber mas usaremos el mismo comando pero pasandole como parámetro el nombre del modulo.

Esto es todo, si quieres profundizar mas te recomiendo que leas la documentación y/o te pases por su pagina web.
Espero que este pequeño howto os haya gustado ^^
Pagina oficial de Gstreamer

0 comentarios:

Publicar un comentario en la entrada

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger