ape+cue = mp3

Приветствую зашедших сюда, в последний день этого лета.

Сегодня хочу представить вашему вниманию не новую, можно даже сказать почти поросшую мхом тему, но от этого не менее актуальную для многих обитателей ОС Linux. Речь пойдет о форматах хранения аудио-данных на компьютере и их обработке, для приведения в более «удобоупотребительский» вид. Родилось новое слово 🙂

Читаем дальше.

Не могу точно угадать, какие форматы аудио-файлов предпочитают использовать другие меломаны, имеющие дома музыкальную коллекцию, хранимую на персональном компьютере, но скажу про себя. Лично я предпочитаю «народный» MPEG1 layer-III большинству иных — просто привычка. Еще куда ни шло Ogg или Flac — тоже вполне воспроизводимые файлы, на большинстве компьютеров.
Тем не менее находятся немало энтузиастов различной экзотики, цифровой эпохи, предпочитающих сохранять свои любимые компакт-диски на компьютер ввиде «образов» диска представляющих связку «файл-образ.ape + файл-образ.cue». Таким образом, получается сохранить на жестком диске сам сжатый образ всех звуковых дорожек — файл-образ.ape, и описывающий временные интервалы всех дорожек (т.н. индексы) файл-образ.cue.

Вероятно тем людям, кто придумал такой вариант хранения музыки это показалось удобным. Однако я например привык, что если я хочу послушать музыку, то я просто захожу в определенную директорию на диске и выбираю нужные отдельные файлы-треки или весь альбом — быстро, удобно и опять же на выбор, причем заметьте почти любым имеющимся в системе проигрывателем. Но в случае с форматом APE+CUE этот способ не проходит столь же легко. Для того, чтобы послушать такой «диск», необходимо заняться в очередной раз (сексом с компьютером) поиском распаковщиков, кодеков и иного софта, который даст возможность насладиться уже наконец любимой музыкой.

В целом, в описываемом мной варианте все сводится к поиску медиаплеера, «понимающего» формат ape(+cue), и позволяющего на выбор:

1. воспроизводить треки непосредственно из такого образа
2. конвертировать треки в более привычный формат
3. 1 и 2 сразу.

Не являюсь ярым противником всего альтернативного, даже вероятно наоборот, но свои привычки менять желанию не имею и потому предпочитаю вариант 3 из списка выше, т.е. преобразование в удобный для меня формат.
Посему, далее речь пойдет именно о таком подходе, а именно о конвертировании ape в mp3.

Теперь более конкретно и ближе к телу.

В самый первый раз, когда я столкнулся с ape-образом, то пытался найти чем ЭТО можно воспроизвести или распаковать хотя бы в *.wav, для дальнейшего сжатия. Однако после того, как я обнаружил, что просто распаковать можно с помощью утилиты «mac» (http://ru.wikipedia.org/wiki/Monkey’s_Audio ), то быстро осознал, что мне этого явно мало, т.к. хотелось бы получить полноценные треки «на выходе». Для последнего же нужно, сначала распаковать содержимое диска в тот же *.wav, затем следует попеременно: сжатие данных кодеком, а также разбиение на отдельные дорожки с использованием специальной утилиты, умеющей это делать на основе информации из файлов *.cue.

Поскольку мои познания не простираются настолько далеко, чтобы самостоятельно написать полноценно работающий шелл-скрипт, позволяющий проделать все перечисленные выше манипуляции на автомате, то пришлось немного погуглить в яндексе, чтобы, как и полагается найти уже придуманный хорошими людьми велосипед, т.е. инструмент. Нашел я его здесь: http://faq4u.ru/?p=50 (или оно же здесь?), а называется срипт «cueape.sh«. Что примечательно, скрипт оказался сразу, сходу рабочим, что случается не так уж и часто, и мне осталось лишь слегка «допилить» его под свои предпочтения по мелочи. Все «допиливание» свелось собственно к установке нужного параметра кодирования с помощью lame, строка:

out="$(lame --preset standard "$tm.wav" "$tm.mp3")"

изменена на

out="$(lame --preset insane "$tm.wav" "$tm.mp3")"

что дает в результате файлы с битрейтом 320кбит.

—————————

строка

out="$(mp3splt -f -c "$(basename "$2")" -o "@n+-+@t" "$tm.mp3")"

изменена на

out="$(mp3splt -c "$(basename "$2")" -o "@n+-+@t" "$tm.mp3")" ,

т.к. флаг -f в mp3splt нужен только для случая с кодирования переменным битрейтом с помощью lame.

Итак, скрипт вкратце делает следующее:

распаковывает из файла *.ape все треки, единым файлом в *.wav при помощи утилиты mac:
сжимает полученый файл с через lame;
разбивает сжатый файл на несколько дорожек, в соответствии с информацией из *.cue при помощи mp3splt.

В итоге для работы скрипта требуются:

lame — mp3-кодировщик;
mac — энкодер-распаковщик файлов monkey audio;
mp3splt — утилита для разбивки на треки;

а также опционально:

flac — декодировщик из flac
Oggenc (пакет vorbis-tools) — кодек OggVorbis

Устанавливаем все перечисленное, копируем скрипт в каталог ~/bin, назначаем ему права на выполнение (chmod +x cueape.sh).

Теперь заходим в каталог, где лежат файлы «диск.ape» «диск.cue» и проверяем работу скрипта, запустив последний командой:

cueape.sh входной.ape входной.cue -m

где: -m — ключ, означающий, что кодировать результат будем с помощью lame в формат mp3.

Если все сделано правильно вы сразу увидите работу распаковщика mac, затем lame и наконец mp3splt. Через несколько минут, по завершении всех операций в каталоге назначения будет создан подкаталог Output, в котором будут лежать все файлы-треки с распакованного диска, включая копии файлов исходников, которые можно сразу же удалить 🙂

Все проделывалось в fedora linux 10, ипользованы пакеты:

mac — Vendor: Freshrpms.net
lame — Vendor: RPM Fusion
flac — Vendor: Fedora Project
vorbis-tools — Vendor: Fedora Project
mp3splt — Vendor: ATrpms.net

Запасной зип с сабжем cueape.zip (копия с github).

Впринципе это все, чем я хотел сегодня поделиться, удачи вам!

VKOdnoklassnikiFacebookTwitterBlogger PostGoogle+Поделиться
Запись опубликована в рубрике ЭВТ ИТ с метками , , , , , , , , , , , , , , . Добавьте в закладки постоянную ссылку.

2 комментария: ape+cue = mp3

  1. где ты был пол месяца назад? Пришлось на Win-машине конвертировать

  2. wilber говорит:

    Был в поисках решения… и еще в отпуске)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *