Skip to Content

Перекодировки музыкальных файлов

Надёргано из разных мест.
Небольшие рецепты по работе с музыкальными форматами.

1. Делаем flac

1.1. Из CD

Существует вагон и маленькая тележка программ, позволяющих получать flac из CD. Многие подобные программы умеют лазить в Интернет, в базу CDDB, за именами и названиями. Позднее добавлю обзор подобных программ.

1.2. Из ape

Появилась у меня пара файлов: .ape и .cue
В первом содержится музыка с целого CD в lossless формате Monkey's audio, во втором — названия композиций, имена исполнителей, смещения композиций в *.ape файле.
Так как я предпочитаю использование другого lossless формата, — flac, в котором каждая композиция хранится в отдельном файле вместе с тэгами, — необходима конвертация.
$ cuebreakpoints .cue | shnsplit -o flac .ape
Получаем множество файлов с именами вида split-trackXX.flac и без тегов внутри. Про теги в пункте 2.2.

2. Балуемся с flac

2.1. Делаем из flac… много flac

Ситуация, подобная описанной в 1.2, но единым хранилищем всех треков CD выступает flac-файл. То есть у нас опять два файла: .flac и .cue
Наши действия по нарезанию:
$ shntool split .flac -f .cue -o flac

2.2. Записываем тэги

Тэги у нас есть, они хранятся в .cue, но нам их надо поместить в наши отдельные треки:
$ cuetag .cue split-track*.flac
Если не устраивает кодировка тегов, предварительно натравливаем iconv на *.cue файл.

2.3. Нормализуем названия файлов

Для переименования файлов из безликих лагерно-нумерованных split-track во сто-то более говорящее воспользуемся командой, подобной
$ lltag --rename '%a/%A/%n - %t' *.flac ?yes

Аналогично, средствами flac-утилит:
for file in *.flac; do title=`(metaflac --show-tag=TITLE $file | sed 's/TITLE=//')`; num=(${file:11:2}); (mv $file "$num $title".flac); done

3. Конвертация из flac

3.1. Делаем ogg

Увы, не все аппаратные плееры умеют играть flac. Для достижения просветления делаем Vorbis:
$ find -name "*.flac" -exec oggenc -q6 '{}' \;

3.2. Делаем mp3

Увы, на планете остались ещё плееры, не умеющие ogg. Для этих аппаратных уродцев последний однострочник:
$ for file in *.flac; do $(flac -cd "$file" | lame -h -q 2 -b 192 - "${file%.flac}.mp3"); done

Ну и конечно же, настоятельно рекомендую прочитать man для использованных команд.

4. Конвертация из wma в mp3

Мощный однострочник. Использует mplayer и lame.

$ for i (*.wma) mplayer -vo null -vc dummy -af resample=44100 -ao pcm -ao pcm:waveheader $i -ao pcm:file=$i:t:r.wav && lame -m j $i:t:r.wav -o $i:t:r.mp3 && rm $i:t:r.wav

5. Конвертация из одного ape в mp3


$ ffmpeg -i .ape temp.mp3
$ mp3splt -c .cue temp.mp3 -o "@n2. @t"