Скрипт для пакетного конвертирования из wav в alaw, ulaw, gsm.
#!/bin/sh IN='IN' # Входная папка. OUT='OUT' # Выходная папка. [ ! -d "$IN" ] && mkdir "$IN" && echo "Create dir: $IN" # Создаем папку для входных файлов. #[ -d "$OUT" ] && rm -rf "$OUT" && echo "Delete dir: $OUT" # Чистим папку OUT. [ ! -d "$OUT" ] && mkdir "$OUT" && echo "Create dir: $OUT" # Создаем папку для выходных файлов. [ -d "$OUT/wav" ] && rm -rf "$OUT/wav" && echo "Delete dir: $OUT/wav" # Чистим папку для wav файлов. [ ! -d "$OUT/wav" ] && mkdir "$OUT/wav" && echo "Create dir: $OUT/wav" # Создаем папку для wav файлов. convert_to() { #$1 - Output format file. #$2 - IN file. [ -z "$1" ] && echo 'ERROR: $1 is empty!' && exit 1 [ -z "$2" ] && echo 'ERROR: $2 is empty!' && exit 1 case $1 in alaw) SOX_OPT='-t al' ;; ulaw) SOX_OPT='-t ul' ;; gsm) SOX_OPT='' ;; *) echo "ERROR: fromat $1 is not supported!"; exit 1 ;; esac # Если нужные директории не существуют, то создаем их. if [ ! -d "$OUT/wav$D_OUT" ]; then echo "Create dir: $D_IN -> $OUT/wav$D_OUT"; mkdir -p $OUT/wav$D_OUT echo '------------------------' fi if [ ! -d "$OUT/$1$D_OUT" ]; then echo "Create dir: $D_IN -> $OUT/$1$D_OUT"; mkdir -p $OUT/$1$D_OUT echo '------------------------' fi F_OUT=$(basename $2 .wav) echo "Processing: $2 -> $OUT/$1$D_OUT/$F_OUT.$1" # Проверим, существует ли входной файл. if [ -f "$2" ]; then # Если нету wav, то для начала сконвертим в wav. if [ ! -f $OUT/wav$D_OUT/$F_OUT.wav ]; then echo 'Convert to 8bit wav first at 8000Hz - this can take a while...' sox "$2" -r 8000 -c1 "$OUT/wav$D_OUT/$F_OUT.wav" fi #Проверяем имеется ли входной wav файл. if [ -f $OUT/wav$D_OUT/$F_OUT.wav ]; then # Если файл в нужном формате $1 уже существует, то сперва удаляем его, потом конвертим if [ -f $OUT/$1$D_OUT/$F_OUT.$1 ]; then echo "INFO: File exist! $OUT/$1$D_OUT/$F_OUT.$1 remove..." rm -f $OUT/$1$D_OUT/$F_OUT.$1 fi sox "$OUT/wav$D_OUT/$F_OUT.wav" $SOX_OPT "$OUT/$1$D_OUT/$F_OUT.$1" else echo "ERROR: Input wav file $OUT/wav$D_OUT/$F_OUT.wav is not exist!" exit 1 fi else echo "ERROR: Input file $2 not exists!" fi } find $IN -type d -depth -print | while read D_IN; do # ищем сперва самые "глубокие Директории" D_OUT=$(echo "$D_IN" | sed -e 's/'$IN'//') # Получаем имя выходного каталога. # Ищем во входном каталоге wav файлы. find $D_IN -type f -name "*.wav" -print -maxdepth 1 | while read file; do convert_to alaw "$file" convert_to ulaw "$file" convert_to gsm "$file" done done # TIP - Увеличение громкости #sox file1.wav -v 5 file2.wav #ffmpeg myfile.wav $i -vol 256 -acodec pcm_s16le -ar 8000 -ac 1 -y filename_out"${i%wav}wav" -vol volume change audio volume (256=normal)
Комментариев нет:
Отправить комментарий