sábado, 8 de enero de 2011

Cómo convertir wav a mp3 o a ogg masivamente

En este tutorial explicaré cómo convertir de wav a formatos comprimidos como ogg y mp3 con un par de comandos inventados y muy fáciles de implementar. No me acuerdo de dónde saqué la idea o si simplemente lo copié de algún sitio, perdonar que no ponga las fuentes. He podido copiarlo de cualquier sitio que os aparezca en google usando las palabras clave.


1. Cómo generar tus propios comandos


Generar un nuevo comando basado en combinaciones de otros comandos y acaso con un poquito de programación básica en bash es divertido.

Primero tenemos que saber cuál es el contenido de la variable $PATH, con un comando como éste:

echo $PATH


Quizás encontréis algo parecido a esto:

/home/pablo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Supongo que no todo el mundo tendrá el directorio /home/su_nombre_de_usuario/bin en la variable $PATH y también es posible que alguien le quiera dar otro nombre a la carpeta que contiene los scripts de usuario. Por ejemplo, podría querer tener un directorio oculto llamado ".mis-scripts" (ojo al punto delante para que automáticamente se convierta en oculto).

En este caso, lo que queremos es añadir "/home/nombre_usuario/.mis-scritps" a la variable PATH. Esto lo podemos hacer de la siguiente forma:

gedit ~/.bashrc

La virguililla "~" es lo mismo que "/home/nombre_de_usuario_que_está_logeado". (Para saber qué usuario está logeado o bien si nos da un ataque de amnesia, podemos usar el comando whoami). Si no queréis copiar y pegar, en el teclado español podemos imprimir en pantalla la virguililla con la combinación [Alt Gr - Ñ] o con [Alt Gr - 4].

El caso es que al final del archivo .bashrc añadimos la siguiente línea:

PATH=/home/nombre_de_usuario/.mis-scripts:$PATH

Por supuesto, el directorio .mis-scripts deberá existir. Lo podemos crear con botón derecho dentro de nuestra carpeta personal. O bien con el comando:

mkdir ~/.mis-scripts

o el nombre que se os ocurra, u oculto o no oculto.

Adelántadome un poco para no perder más tiempo reiniciando cuando lleguemos al paso 4, si usamos gnome y nautilus (que traen por defecto las distros mayoritarias) vamos a instalar ahora el paquete "nautilus-open-terminal". Ya que tenemos la terminal abierta, sólo hay que copiar el comando:

sudo apt-get install nautilus-open-terminal

En el siguiente logueo del usuario (o arranque del ordenador) comprobamos otra vez con "echo $PATH" si el directorio elegido forma parte de PATH.

Bueno, pues ahora todos los scripts de bash ejecutables que estén en este directorio se pueden ejecutar simplemente invocando el nombre del archivo.

Yo tengo uno que se llama wav2mp3

2. Contenido de wav2mp3

Una vez que hemos comprobado que tenemos un directorio en "nuestro home" que forma parte de la variable PATH, podemos crear un archivo de texto dentro de dicho directorio, con el nombre wav2mp3 (o cualquier otro que se os ocurra siempre que sea coherente con el resto de explicaciones del tutorial) y con el siguiente contenido:

#!/bin/bash
#
# wav2mp3
#
for i in *.wav; do
lame -h -b 320 "$i" "${i%.wav}.mp3"
done


El comando que realmente hace la conversión es lame. En este caso, decimos que convierta a mp3 con buena calidad (opción -h) y a 320 kps (opción -b 320). Lo bueno de este script es que nos convierte de una vez todos los archivos wav que tengamos en el directorio donde lo apliquemos, como veremos en el punto 4.

3. Permiso de ejecución

Debemos dar a wav2mp3 permiso de ejecución. Botón derecho sobre el archivo, propiedades, permisos, permitir ejecutar el archivo como un programa. Desde la terminal lo podemos hacer con el comando:

chmod +x ~/.mis-scripts/*

4. Uso de wav2mp3


Para usar wav2mp3 abrimos una terminal en la localización donde tenemos los wav que queremos convertir a mp3. Para ello, si tenemos instalado nautilus-open-terminal, simplemente tendremos que navegar gráficamente hasta la carpeta que contiene los wavs, pulsar botón derecho dentro de la misma y "Abrir en un terminal".

Ahora escribimos:

wav2mp3

Y voilà, en un rato más o menos largo todos nuestros archivos de audio en wav serán convertidos a mp3 de alta calidad , en el mismo directorio, manteniendo su nombre y cambiando la extensión a mp3.

5. Y ogg?

Bueno, habrá que hacer otro comando wav2ogg. Para ello podemos usar este script:

#!/bin/bash
#
# wav2ogg
#
for i in *.wav; do
oggenc "$i" -q 6 -o "${i%.wav}.ogg"
done



Por supuesto, lame y oggenc pueden ser invocados con otras opciones. Siempre podemos echar un vistazo a sus manuales:

man lame

man oggenc

8 comentarios:

  1. Excelente amigo, siempre nos enseñas cosas interesantes. Gracias Pablo. Espero que hayas pasado felices fiestas. Ahora toca la normalidad otra vez.
    Saludos.

    ResponderEliminar
  2. Gracias Pablo por la info, yo utilizo ffmpeg desde la terminal para conversión de audio y video pero probaré tu método con ese script. Por cierto, para los recien llegados a Linux, hay un frontend que utiliza lame para convertir ficheros de audio a otros formatos, se llama soundconverter (supongo que lo conoces) es facilísimo de usar y está en los repositorios de Ubuntu, no sé en otras distros.

    Saludos y feliz año.

    ResponderEliminar
  3. gracias pablo.
    vivaldis

    ResponderEliminar
  4. ¡Gracias por los comentarios! Sí, vuelta a la (a)normalidad pero qué le vamos a hacer. Gracias César por señalar Soundconverter. La verdad es que "mi" método se queda muy pobre comparando con lo que hace. Vamos, que he descubierto la pólvora...

    ResponderEliminar
  5. Si también queréis vídeo y audio a convertir el Mobile Media Converter también funciona bién. Lo bajo como deb y a funcionar.

    Un Saludo

    ResponderEliminar
  6. Fabuloso!! Muchas gracias. No hay nada como Linux!

    ResponderEliminar
  7. Para meter tus scripts de usuario normalmente se usa el directorio ~/bin o /home/usuario/bin
    En caso de no existir, crearle con:
    mkdir ~/bin
    Y verificar que en ~/.bashrc ya hay una línea que añade ~/bin al PATH (aunque no se haya creado el directorio en la instalación por defecto, como en ubuntu).

    ResponderEliminar