Expertus metuit
Кодируем-декодируем музыку на линуксе
2012-11-22 21:55

Тема заметки: конвертация музыкальных файлов (flac, mp3, wav, ape).

Меньше слов, больше дела.

Все скрипты ниже даны исключительно для образовательных целей, последние их версии всегда на гитхабе (не копипастите их с этой страницы):

git clone https://github.com/sigsergv/music-tools.git

Далее приводятся листинги скриптов для всяких разных действий.

Декодирование .flac файла в .wav

Тут всё просто, понадобится только программа flac:

flac -d filename.flac

Декодирование файлов формата WAVPACK

Для этого используется программа wvunpack, в Debian она в пакете wavpack.

wvunpack filename.wv

Декодирование файлов формата APE

Формат APE достаточно неприятный, для его декодирования используется программа mac и скрипт ниже. Программа входит в пакет monkeys-audio, который можно поставить в Debian с репозитория deb-multimedia.org.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/sh

FILENAME=$1

if [ "X$FILENAME" = "X" ]; then
    echo filename is required
    exit 1
fi

WAV_FILENAME=`echo $FILENAME|sed -e 's/.ape$/.wav/'`

mac "$FILENAME" "$WAV_FILENAME" -d

Конвертация всех .flac-файлов из текущего каталога в .mp3 в наилучшем качестве

Для работы понадобятся установленные программы flac и lame, в Ubuntu/Debian они находятся в одномённых пакетах. Скрипт flac2mp3 в гитхабовском репозитории.

1
2
3
4
5
6
7
8
#!/bin/sh

# convert all flac files in the current dir

for i in *.flac; do
    BASE=`basename "$i" .flac`
    flac -c -d "$i" | lame -q 0 -m s -cbr -b 320 - "$BASE.mp3"
done

Конвертация .wav-файлов в .mp3

Скрипт в гитхабе под именем wav2mp3, конвертирует все .wav-файлы из каталога в формат mp3 с наилучшим качеством.

1
2
3
4
5
6
7
8
#!/bin/sh

# convert all flac files in the current dir

for i in *.wav; do
    BASE=`basename "$i" .wav`
    lame -q 0 -m s -cbr -b 320 "$i" "$BASE.mp3"
done

Разбиение .wav-файла на треки по CUE-таблице

Этот шаг обычно нужен для разбивания одного большого .flac-файла с CUE-таблицей на отдельные треки. В гитхабовском репозитории он в скрипте wav2tracks.

Для работы скрипта понадобятся программы cuebreakpoints и shnsplit, в Debian/Ubuntu ищите их в пакетах cuetools и shntool. Первым параметром в скрипт передаётся путь до CUE-файла, вторым — путь до WAV-файла.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/sh

CUE=$1
WAV=$2

usage()
{
    echo -e "Usage:\n\t $0 <CUE-file> <WAV-file>"
}

if [ "X" = "X$CUE" ]; then
    echo "ERROR: <CUE-file> is required"
    usage
    exit 1
fi

if [ "X" = "X$WAV" ]; then
    echo "ERROR: <WAV-file> is required"
    usage
    exit 1
fi

if [ \! -e "$CUE" -o \! -e "$WAV" ]; then
    echo "Files not found"
    usage
    exit 1
fi

cuebreakpoints "$CUE" | shnsplit -n "%02d" "$WAV"

Комментарии

Текст комментария (разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com> ещё)
Имя (обязательно, 50 символов или меньше)
Опциональный email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2022 Sergey Stolyarov | Работает на Pyrone