| sebb.info |
"Write programs that handle text streams, because that is the universal interface."
Creadores del sistema Unix. |
| Inicio | Informática | Letras | Links | Acerca de |
|
> Un conversor de wma a mp3 y ogg:
El formato propietario wma es común, innecesario (habiendo mp3 y ogg) y habitualmente molesto, a no ser que usemos el reproductor que ofrece Microsoft. Propongo aquí un pequeño script para convertir de dicho formato a mp3 y a ogg. Existen varias versiones del script, todas parecidas, pero muy básicas y sólo para la línea de comandos. El script que ofrezco aquí tiene varias mejoras:
#!/bin/bash
# # # # # # # # # # # # # # # # # # # # # # #
# Convierte archivos wma a mp3 y a ogg v0.4
# Copyright sebb@sebb.info
# Más información en sebb.info
# Licencia Creative Commons 3.0
# # # # # # # # # # # # # # # # # # # # # # #
IFS="
"
# 1- buscar ffmpeg
ffmpeg &> /dev/null
if [ "$?" -ne "1" ] ; then
kdialog --title "Conversor wma a mp3" --sorry "Error: ffmpeg no está
\instalado en este sistema.
Puedes instalarlo con:
sudo apt-get install ffmpeg"
exit 1
fi
function da_error {
kdialog --sorry "Ha habido un error"
exit 1
}
# 2- Elegir tipo de conversión, coger lista de archivos, etc
function elegir_opciones
{
tipoconversion=`kdialog --radiolist "Por favor, elige una opción:" \
a "De \"wma\" A \"mp3\"" 0 b "De \"wma\" A \"ogg\"" 0`
if [ "$tipoconversion" = "a" ] ; then
tipoconversion="mp3"
elif [ "$tipoconversion" = "b" ] ; then
tipoconversion="ogg"
else
da_error
fi
freq=`kdialog --title "Elige la frecuencia de muestreo:" --inputbox "Elige la frecuencia de muestreo:" "44100"`
( [ "$freq" = "" ] || [[ "$freq" =~ "[[:punct:]]" ]] || [[ "$freq" =~ "[[:alpha:]]" ]] || \
[[ "$freq" =~ "[[:blank:]]" ]] ) && freq=44100
bitrate=`kdialog --title "Elige el bitrate (tasa de bits):"\
--inputbox "Elige el bitrate (tasa de bits):" "192"`
( [ "$bitrate" = "" ] || [[ "$bitrate" =~ "[[:punct:]]" ]] || [[ "$bitrate" =~ "[[:alpha:]]" ]] || \
[[ "$bitrate" =~ "[[:blank:]]" ]] ) && bitrate=192
directorio=`kdialog --title "Elige el directorio donde están los WMA:" --getexistingdirectory ~`
[ "$directorio" = "" ]&&da_error
cd $directorio||da_error
directorio_salida=`kdialog --title "Conversor wma a mp3 y ogg" --menu "¿Quieres guardar los $tipoconversion \
en el mismo directorio o en otro directorio?" a "Mismo directorio: $directorio" b "Otro directorio"`
[ "$directorio_salida" = "a" ]&&directorio_salida=$directorio
[ "$directorio_salida" = "" ]&&da_error
if [ "$directorio_salida" = "b" ] ; then
directorio_salida=`kdialog --title "Elige el directorio donde quieres guardar los \
$tipoconversion" --getexistingdirectory ~`
[ "$directorio_salida" = "" ]&&da_error
fi
confirmar=`kdialog --warningcontinuecancel "Convertir
Desde: $directorio
Hacia: $directorio_salida
Formato: $tipoconversion
Frecuencia: $freq
Bitrate: $bitrate.
Si desea cambiar las opciones, pulse \"Cancelar\"
Si está conforme, pulse \"Continuar\"
" `
[ "$?" = "2" ]&&elegir_opciones
}
elegir_opciones
( kdialog --title "¡Empezando la conversación!" --passivepopup \
"¡Empezando la conversación!
Desde: $directorio
Hacia: $directorio_salida
Formato: $tipoconversion
Frecuencia: $freq
Bitrate: $bitrate." 4 ) &
# 3- limpiar nombres y renombrar
vuelta=1
max=`find -iname "*wma" -print | wc -l`
progreso=`kdialog --progressbar "Convirtiendo archivos de wma a $tipoconversion" $max`
for archivo in `find -iname "*wma" -print` ; do
archi_limpio=`echo $(basename "$archivo") | sed -e 's/?//g' -e 's/!//g' | \
sed -e "s/.wma$/\.$tipoconversion/i"`
if [ -a "$directorio_salida/$archi_limpio" ] ; then
nuevo=`echo $(basename "$archivo") | sed -e 's/?//g' -e 's/!//g' | sed -e "s/.wma$/\
$(date +%s).$tipoconversion/i"`
archi_existe=`kdialog --title "Conversor wma a $tipo_conversion"
--yesnocancel "¡Error! El archivo $archi_limpio ya existe.
¿Deseas renombrarlo?
¡Si eliges NO, el archivo se va a sobreescribir!"`
respuesta=$?
if [ "$respuesta" = "2" ] ; then dcop $progreso close&&da_error
elif [ "$respuesta" = "1" ] ; then rm -f "$directorio_salida/$archi_limpio"
elif [ "$respuesta" = "0" ] ; then
pregunta=`kdialog --inputbox "Elige un nuevo nombre para $archivo" "$nuevo"`
archi_limpio="$nuevo"
fi
fi
# Renombrar posibles duplicados
[ -s "$directorio_salida/$archi_limpio" ] && \
mv "$directorio_salida/$archi_limpio" "$directorio_salida/$archi_limpio.bak.`date +"%d-%m-%Y.%H-%M-%S"`.mp3"
# 4- convertir
ffmpeg -i "$archivo" -acodec $tipoconversion -ab $bitrate -ar $freq "$directorio_salida/$archi_limpio"
[ "$?" -eq "0" ]||da_error
dcop $progreso setProgress $vuelta
vuelta=$((vuelta+1))
done
dcop $progreso close
kdialog --title "Conversor wma a mp3 y ogg" --msgbox "¡El proceso ha terminado con éxito!
Los archivos están en $directorio_salida"
Si tienes alguna pregunta o mejora, escríbeme. |