UMGUM.COM (лучше) 

Разделение на треки APE + CUE контейнера ( Финал борьбы за прослушивание Lossless Audio на Debian Linux. )

28 ноября 2010  (обновлено 31 января 2015)

OS: Debian GNU/Linux Lenny.

Не так давно я описывал приключения с воспроизведением Lossless Audio в контейнере APE на Debian Lenny. Контейнер APE представляет из себя один файл, образно воспринимаемым как копия CD или DVD диска, с идущими подряд треками. Как правило, к контейнеру APE прилагается специальный индексный файл-оглавление формата CUE, в котором обозначены точки позиционирования отдельных треков внутри контейнера с сопутствующей "мета"-информацией.

Задача была решена, хотя и через "пень-колоду", путём сборки свежей версии ранее никогда не использовавшегося мною плеера QMMP. Мне самому не понравилась необходимость держать ещё один проигрыватель для воспроизведения какого-то там промежуточного формата. Вообще, я считаю, что глупо компоновать треки в неделимый альбом, с отдельно вынесенным оглавлением. С какой стати, скажите на милость, я должен вестись на представления кого бы то ни было о том, в какой последовательности и объёме следует формировать списки воспроизведения?

В общем, хотя бы и для ощущения маленького чувства самоудовлетворения от обретения контроля над ситуацией, было решено разбить APE на треки.


Будем исходить из того, что мы имеем треки "Lossless Audio" в контейнере формата APE "file.ape" и прилагающийся к ним индексный файл-оглавление в формате CUE "file.cue".

Устанавливаем пакеты приложений и библиотек поддержки форматов CUE, FLAC, WAV и инструментарий конвертирования:

# aptitude install cuetools shntool flac wavpack iconv

Конвертируем индексный файл CUE с "тегами" в более предпочтительную кодировку UTF-8, если на есть необходимость:

# iconv --from-code=cp1251 --to-code=utf8 file.cue > file.utf8.cue

Так как в библиотеках Debian Lenny толком не реализована работа с форматом MAC (Monkey’s Audio lossless audio Codec), прямое разделение файла-контейнера формата APE на отдельные композиции не представляется возможным. Проще всего конвертировать файл-контейнер формата APE в файл-контейнер формата WAV, а после уже разбить его на дорожки.

Конвертируем APE в WAV:

# ffmpeg -i "file.ape" "file.wav"

Разделяем файл формата WAV на отдельные треки в соответствии с индексом, содержащимся в CUE файле с последующим перекодированием во FLAC и укладыванием результата в специальной директории для последующей обработки:

# mkdir -p ./result
# cuebreakpoints "file.cue" | shnsplit -d "./result" -a "prefix-" -o flac "file.wav"

Теперь дополняем получившиеся композиции в формате FLAC "метаданными", иначе говоря - "тегами":

# cuetag "file.cue" ./result/prefix-*.flac

И, в качестве завершающего штриха, переименовываем композиции в соответствии с тегом "TITLE", например, если будет на то необходимость:

# cd ./result
# for FILE in `ls -1 *.flac`; do mv "$FILE" "`metaflac --show-tag=TRACKNUMBER $FILE | awk '{print sprintf("%02d", substr($0, 1+index($0, "=")))}'` - `metaflac --show-tag=TITLE $FILE | awk '{gsub("/", "#", $0); print substr($0, 1+index($0, "="))}'`.flac"; done

В итоге, в директории "./result" мы получим корректно именованные треки, ранее содержащиеся в контейнере APE.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )