|
Packit |
47f805 |
#!/bin/sh
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
############################################################################
|
|
Packit |
47f805 |
#
|
|
Packit |
47f805 |
# Run the LAME encoder on multiple files, with option to delete .wav files
|
|
Packit |
47f805 |
# after encoding. "mlame -?" will give instructions.
|
|
Packit |
47f805 |
#
|
|
Packit |
47f805 |
# Robert Hegemann
|
|
Packit |
47f805 |
# modified on request: Frank Klemm <pfk@uni-jena.de>
|
|
Packit |
47f805 |
#
|
|
Packit |
47f805 |
############################################################################
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
# encoder path to use
|
|
Packit |
47f805 |
mp3coder="lame"
|
|
Packit |
47f805 |
mp3analyzer="mlame_corr"
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
# default options to use
|
|
Packit |
47f805 |
options_low="-h -d -mj -b 128"
|
|
Packit |
47f805 |
options_high="-h -d -mj -V 1 -b 112 -B 320"
|
|
Packit |
47f805 |
options=$options_high
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
# remove source?
|
|
Packit |
47f805 |
removesource=false
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
# force overwrite of destination
|
|
Packit |
47f805 |
testoverwrite=true
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
# waiting after error report n seconds
|
|
Packit |
47f805 |
errordelay=1
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
helptext="\n\
|
|
Packit |
47f805 |
This script runs the LAME mp3 encoder on multiple files: \n\n\
|
|
Packit |
47f805 |
$0 [options] <file 1> ... <file n>\n\
|
|
Packit |
47f805 |
\n\
|
|
Packit |
47f805 |
options:\n\
|
|
Packit |
47f805 |
-? this help text\n\
|
|
Packit |
47f805 |
-r remove files after encoding\n\
|
|
Packit |
47f805 |
-f force overwrite of destination if exists\n\
|
|
Packit |
47f805 |
-l low quality settings\n\
|
|
Packit |
47f805 |
-h high quality settings\n\
|
|
Packit |
47f805 |
-o \"<lame options>\" overrides script default options
|
|
Packit |
47f805 |
\n\
|
|
Packit |
47f805 |
example:\n\
|
|
Packit |
47f805 |
$0 -r -f -o \"-v -V 0 -b 112\" a*.wav z*.aif g*.mp?\n\
|
|
Packit |
47f805 |
\n\
|
|
Packit |
47f805 |
"
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
# process command-line options
|
|
Packit |
47f805 |
# this could be extended to fake the
|
|
Packit |
47f805 |
# commandline interface of the mp3encoder
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
while getopts ":o:r:h:l:f" optn; do
|
|
Packit |
47f805 |
case $optn in
|
|
Packit |
47f805 |
o ) options=$OPTARG # replace default options
|
|
Packit |
47f805 |
echo New lame options are \'$options\'
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
r ) removesource=true
|
|
Packit |
47f805 |
echo Removing source files after successfully converting
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
f ) testoverwrite=false
|
|
Packit |
47f805 |
echo Force overwriting existing destination files
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
h ) options=$options_high
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
l ) options=$options_low
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
\? ) printf "$helptext"
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
exit 1
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
esac
|
|
Packit |
47f805 |
done
|
|
Packit |
47f805 |
shift $(($OPTIND - 1))
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
# no files remaining?
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
if [ "$1" = "" ]; then
|
|
Packit |
47f805 |
printf "$helptext"
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
exit 1
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
# process input-files
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
for src in "$@"; do
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
case $src in
|
|
Packit |
47f805 |
*[.][wW][aA][vV] )
|
|
Packit |
47f805 |
dst=${src%[.][wW][aA][vV]}.mp3
|
|
Packit |
47f805 |
if [ -f "$src" ]; then
|
|
Packit |
47f805 |
if [ $testoverwrite = true -a -f "$dst" ]; then
|
|
Packit |
47f805 |
echo \'$dst\' already exists, skipping
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
elif $mp3coder $options `$mp3analyzer "$src"` "$src" "$dst"; then
|
|
Packit |
47f805 |
if [ $removesource = true ]; then
|
|
Packit |
47f805 |
rm -f "$src"
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo converting of \'$src\' to \'$dst\' failed
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo No source file \'$src\' found.
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
*[.][aA][iI][fF] )
|
|
Packit |
47f805 |
dst=${src%[.][aA][iI][fF]}.mp3
|
|
Packit |
47f805 |
if [ -f "$src" ]; then
|
|
Packit |
47f805 |
if [ $testoverwrite = true -a -f "$dst" ]; then
|
|
Packit |
47f805 |
echo \'$dst\' already exists, skipping
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
elif $mp3coder $options "$src" "$dst"; then
|
|
Packit |
47f805 |
if [ $removesource = true ]; then
|
|
Packit |
47f805 |
rm -f "$src"
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo converting of \'$src\' to \'$dst\' failed
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo No source file \'$src\' found.
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
*[.][aA][iI][fF][fF] )
|
|
Packit |
47f805 |
dst=${src%[.][aA][iI][fF][fF]}.mp3
|
|
Packit |
47f805 |
if [ -f "$src" ]; then
|
|
Packit |
47f805 |
if [ $testoverwrite = true -a -f "$dst" ]; then
|
|
Packit |
47f805 |
echo \'$dst\' already exists, skipping
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
elif $mp3coder $options "$src" "$dst"; then
|
|
Packit |
47f805 |
if [ $removesource = true ]; then
|
|
Packit |
47f805 |
rm -f "$src"
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo converting of \'$src\' to \'$dst\' failed
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo No source file \'$src\' found.
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
*[.][mM][pP][gG12] )
|
|
Packit |
47f805 |
dst=${src%[.][mM][pP][gG12]}.mp3
|
|
Packit |
47f805 |
if [ -f "$src" ]; then
|
|
Packit |
47f805 |
if [ $testoverwrite = true -a -f "$dst" ]; then
|
|
Packit |
47f805 |
echo \'$dst\' already exists, skipping
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
elif $mp3coder $options "$src" "$dst"; then
|
|
Packit |
47f805 |
if [ $removesource = true ]; then
|
|
Packit |
47f805 |
rm -f "$src"
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo converting of \'$src\' to \'$dst\' failed
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo No source file \'$src\' found.
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
*[.][mM][pP]3 )
|
|
Packit |
47f805 |
dst=${src%[.][mM][pP]3}-new-converted-file.${src##*.}
|
|
Packit |
47f805 |
if [ -f "$src" ]; then
|
|
Packit |
47f805 |
if [ $testoverwrite = true -a -f "$dst" ]; then
|
|
Packit |
47f805 |
echo \'$dst\' already exists, skipping
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
elif $mp3coder $options "$src" "$dst"; then
|
|
Packit |
47f805 |
if [ $removesource = true ]; then
|
|
Packit |
47f805 |
mv -f "$dst" "$src"
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo converting of \'$src\' to \'$dst\' failed
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
else
|
|
Packit |
47f805 |
echo No source file \'$src\' found.
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
fi
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
* ) # the rest
|
|
Packit |
47f805 |
echo warning: File extention \'.${src##*.}\' not supported
|
|
Packit |
47f805 |
sleep $errordelay
|
|
Packit |
47f805 |
;;
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
esac
|
|
Packit |
47f805 |
|
|
Packit |
47f805 |
done
|