CyberAlberto

Mi rincón personal en internet

Script para conversión de ficheros WAV a MP3

Hay infinidad de programas que te convierten de WAV a MP3, pero en el mundo UNIX no he encontrado uno que me deje configurar los parámetros de calidad como a mí me gustan, ni que aproveche los ‘cores’ del procesador. En Windows solía usar Razorlame, un ‘front-end’ muy básico pero a la vez muy potente. En Mac OS aún no lo he encontrado, así que he tenido que programarme un pequeño script que cualquiera puede usar. Las críticas contructivas son bien recibidas 😉

Este script funciona en cualquier sistema UNIX que tenga BASH y el binario lame. Lame es el software que se encarga de codificar un fichero de audio WAV a MP3. El script que presentamos a continuación tiene 2 formas de invocarse en el terminal:

  • Sin parámetros: wav2mp3, que codifica todos los ficheros WAV del directorio actual a MP3. Lanza un proceso independiente por cada fichero, por tanto pone el procesador a máximo rendimiento.
  • Con 1 parámetro: wav2mp3 fichero_wav, que codifica dicho fichero WAV.

La calidad de MP3 que a mí me gusta es la siguiente: Variable bit rate, mínima 192Kbps, media 264Kbps y máxima 320Kbps. El código fuente del script es:

#!/bin/bash

##
## wav2mp3, convert a wav file in a mp3.
##

if [ "$1" == "" ]; then
	echo Convert all in this directory
	find . -maxdepth 1 -name "*.wav" -exec wav2mp3 {} \;
	exit
fi

# Define useful variables
dirname=$(dirname "$1")
inputfile=$(basename "$1")

filename=$(basename "$1" .wav)
filename=$(basename "$filename" .WAV)

# If file is located in root dir, then supress "/"
if [ "$dirname" == "/" ]; then
	dirname=""
fi

# Convert the file
if [ "$dirname" == "." ]; then
	echo "Converting file \"$filename\" from WAVE to MPEG layer 3..."
	echo "--------------------"
	lame  -S -b 192 -m s -h --abr 264 -B 320 "$inputfile" "$filename.mp3" &
else
	echo "Converting file \"$dirname/$filename\" from WAVE to MPEG layer 3..."
	echo "--------------------"
	lame  -S -b 192 -m s -h --abr 264 -B 320 "$dirname/$inputfile" "$dirname/$filename.mp3" &
fi

echo
echo Task launched!
Anuncios

Martes, 27 enero 2009 - Posted by | Personal, programación, Script bash

Sorry, the comment form is closed at this time.

A %d blogueros les gusta esto: