audioconverter0000755000175000017500000001502110232741156014663 0ustar miltonmilton00000000000000#!/bin/bash # ------------------------------------------------------------------------ # MilMazz # milmazz@milmazz.com # http://milmazz.com # Puede hacerme llegar sus comentarios, sugerencias, etc. # Artículo sobre el Audio Converter # http://milmazz.com/archivos/2005/04/21/convirtiendo-los-formatos-de-compresion-de-audio/ # ADVERTENCIA # Este script se propone para facilitar la conversion entre formatos # de compresion de audio, puede convertir ficheros mp3 a wav, mp3 a ogg, # ogg a wav, ogg a mp3, wav a ogg, wav a mp3 y wma a mp3. # Haga uso de este script bajo su propia responsabilidad, NO me hago # responsable en caso que ud. pierda sus datos o suceda cualquier tragedia. # Este script se ha probado en Ubuntu Linux (Hoary Hedgehog) # Previo al uso del script debe instalar los paquetes necesarios # * lame (permite codificar ficheros MP3) # * mpg321 (permite decodificar ficheros MP3) # * vorbis-tools (para poder codificar y decodificar ficheros OGG Vorbis) # * normalize (Ajusta el volumen de los ficheros) # * rename (para renombrar los ficheros) # * zenity (permite el despliege de ventanas) # ------------------------------------------------------------------------ #Funciones #Conversion de ficheros *.mp3 a *.wav function mp32wav() { check_ins "mpg321" "rename" ls *.mp3 errs $? "No se ha encontrado ningun fichero .mp3 en este directorio." rename 'y/\ /_/' *.mp3 rename 'y/A-Z/a-z/' *.mp3 for archivo in *.mp3; do local aux="$(basename "${archivo}" .mp3)" mpg321 -w "${aux}.wav" "${aux}.mp3" done if [ "${1}" = "AC" ]; then zenity --info \ --title="Resultado" \ --text="Conversion MP3 a WAV finalizada." fi } #Conversion de ficheros *.ogg a *.wav function ogg2wav() { check_ins "oggdec" "rename" ls *.ogg errs $? "No se ha encontrado ningun fichero .ogg en este directorio." rename 'y/\ /_/' *.ogg rename 'y/A-Z/a-z/' *.ogg for archivo in *.ogg; do local aux="$(basename "${archivo}" .ogg)" oggdec "${aux}.ogg" -o "${aux}.wav"; done if [ "${1}" = "AC" ]; then zenity --info \ --title="Resultado" \ --text="Conversion OGG a WAV finalizada." fi } #Conversion de fichero *.wav a *.mp3 function wav2mp3() { check_ins "normalize" "lame" "rename" ls *.wav errs $? "No se ha encontrado ningun fichero .wav en este directorio." rename 'y/\ /_/' *.wav rename 'y/A-Z/a-z/' *.wav normalize -m *.wav if zenity --entry \ --title="Ingreso de datos" \ --text="Ingrese el valor del Bitrate:" \ --entry-text="160" > bitrate.txt then bitrate=$(head bitrate.txt); rm -f bitrate.txt else bitrate="160" fi for archivo in *.wav; do local aux="$(basename "${archivo}" .wav)" lame -b ${bitrate} "${aux}.wav" "${aux}.mp3" done if [ "${1}" = "AC" ]; then zenity --info \ --title="Resultado" \ --text="Conversion WAV a MP3 finalizada." fi } #Conversion de fichero *.wav a *.ogg function wav2ogg() { check_ins "normalize" "oggenc" "rename" ls *.wav errs $? "No se ha encontrado ningun fichero .wav en este directorio." rename 'y/\ /_/' *.wav rename 'y/A-Z/a-z/' *.wav normalize -m *.wav for archivo in *.wav; do local aux="$(basename "${archivo}" .wav)" oggenc "${aux}.wav" -o "${aux}.ogg" done if [ "${1}" = "AC" ]; then zenity --info \ --title="Resultado" \ --text="Conversion WAV a OGG finalizada." fi } #Conversion de archivo *.ogg a *.mp3 function ogg2mp3() { ls *.ogg errs $? "No se ha encontrado ningun fichero .ogg en este directorio." ogg2wav wav2mp3 echo "Borrando los ficheros *.wav temporales..." rm -f *.wav zenity --info \ --title="Resultado" \ --text="Conversion OGG a MP3 finalizada." } #Conversion de archivo *.mp3 a *.ogg function mp32ogg() { ls *.mp3 errs $? "No se ha encontrado ningun fichero .mp3 en este directorio." mp32wav wav2ogg echo "Borrando los ficheros *.wav temporales..." rm -f *.wav zenity --info \ --title="Resultado" \ --text="Conversion MP3 a OGG finalizada." } #Conversion de archivo *.wma a *.mp3 function wma2mp3() { check_ins "mplayer" "lame" "rename" ls *.wma errs $? "No se ha encontrado ningun fichero .wma en este directorio." rename 'y/\ /_/' *.wma rename 'y/A-Z/a-z/' *.wma #Decodificando con MPlayer, Codificando con lame for archivo in *.wma; do local aux="$(basename "${archivo}" .wma)" mplayer -vo null -vc dummy -af resample=44100 -ao pcm -waveheader "${aux}.wma" lame -m s audiodump.wav -o "${aux}.mp3" done rm -f audiodump.wav zenity --info \ --title="Resultado" \ --text="Conversion WMA a MP3 finalizada." } #Detectando posibles errores function errs() { if [ "${1}" -ne "0" ]; then zenity --error \ --text="${2}" exit ${1} fi } #Comprobando la instalacion de paquetes function check_ins() { for i in $*; do which "${i}" if [ "${?}" -ne "0" ]; then errs "1" "El programa ${i} no esta instalado." fi done } #Programa Principal which zenity > /dev/null if [ "${?}" -ne "0" ]; then echo "ERROR: El programa zenity no esta instalado." exit 1 fi zenity --list \ --title="AudioConverter (v0.3)" \ --text="Seleccione una operacion a realizar de la lista." \ --radiolist \ --width="355" \ --height="290" \ --column="" --column="#" --column="Operacion" --column="Descripcion" \ FALSE 1 "MP3 a WAV" "Convierte ficheros MP3 a WAV" \ FALSE 2 "MP3 a OGG" "Convierte ficheros MP3 a OGG" \ FALSE 3 "OGG a WAV" "Convierte ficheros OGG a WAV" \ FALSE 4 "OGG a MP3" "Convierte ficheros OGG a MP3" \ FALSE 5 "WAV a OGG" "Convierte ficheros WAV a OGG" \ FALSE 6 "WAV a MP3" "Convierte ficheros WAV a MP3" \ FALSE 7 "WMA a MP3" "Convierte ficheros WMA a MP3" > audioconv.txt opt=$(head < audioconv.txt) rm -f audioconv.txt #El parametro AC unicamente se utiliza para controlar el despliege #de cuadros de dialogo a traves de estructuras condicionales #cuando las funciones son llamadas, asi evito llenar la pantalla #ðe ventanas innecesarias :) case ${opt} in 1) mp32wav "AC" 2>&1 | zenity --text-info \ --title="Registro de la Conversion" \ --width="420" \ --height="500";; 2) mp32ogg 2>&1 | zenity --text-info \ --title="Registro de la Conversion" \ --width="420" \ --height="500";; 3) ogg2wav "AC" 2>&1 | zenity --text-info \ --title="Registro de la Conversion" \ --width="420" \ --height="500";; 4) ogg2mp3 2>&1 | zenity --text-info \ --title="Registro de la Conversion" \ --width="420" \ --height="500";; 5) wav2ogg "AC" 2>&1 | zenity --text-info \ --title="Registro de la Conversion" \ --width="420" \ --height="500";; 6) wav2mp3 "AC" 2>&1 | zenity --text-info \ --title="Registro de la Conversion" \ --width="420" \ --height="500";; 7) wma2mp3 2>&1 | zenity --text-info \ --title="Registro de la Conversion" \ --width="420" \ --height="500";; esac