Это старая версия документа.
Содержание
В наше время всё ещё популярны обычные Audio-CD с музыкой. У них есть одна особенность: они фактически не содержат никаких файлов и просто скопировать их из файлового менеджера нельзя. Мало того, их формат таков, что при чтении вполне могут возникать ошибки, которые вы даже не заметите при обычном проигрывании музыки, но которые нежелательны при снятии рипа.
Если вы не гоняетесь за абсолютным качеством и точным соответствием снятого рипа исходному диску, а просто хотите сохранить музыку на компьютер, то вам подойдёт любая из десятков программ, обладающих нужным функционалом. Например:
- k3b
- RubyRipper
- linuxrip
- … многие другие
В этом случае просто сохраните музыку в ogg или mp3 с нужными вам настройками качества и можете дальше не читать эту статью.
Однако часто хочется иметь точную копию того самого любимого диска. В этом случае вам во первых не подойдёт обычная программа чтения, а во вторых придётся использовать так называемый lossless формат хранения музыки.
Подробности про то, что такое lossless, про всякие тонкости формата Audio-CD и прочие теоретические аспекты можете почитать на соответствующих тематических ресурсах. В этой же статье хочется собрать максимально подробную практическую информацию по снятию аудио рипов.
Снятие рипа
В Linux существует множество хороших программ для снятия рипов с дисков. Но познавательный факт заключается в том, что все они используют для этих целей одну и ту же утилиту командной строки - cdparanoia
.
Поэтому лучше всего всегда использовать именно её для снятия рипов, благо по качеству она не уступает ни одной другой существующей программе, включая широко известный EAC.
Итак, я для снятия рипов использую команду
cdparanoia -vzl -O +6 [::]- CDImage.wav
Самым важным тут является так называемый оффсет, без правильного указания которого вы никогда не получите точный рип. Для моего привода он равен +6. Узнать оффсет можно из базы данных accuraterip.com, узнать модель вашего привода можно командой
sudo lshw -c disk
cdparanoia
, то смело правьте эту статью и добавляйте как можно больше информации!
Рекомендуется снимать рип несколько раз подряд, а потом проверить идентичность полученных файлов вычислением md5-суммы для них. Например, если вся работа происходит в одной папке, это можно сделать так:
md5sum -b *.wav
Все суммы должны совпадать. Если диск слишком повреждён - то совпадать они возможно не будут. В этом случае есть несколько вариантов для получения таки правильного и точного рипа:
- Снимать рип до тех пор, пока не получите несколько совпадающих файлов.
- Более сложный, но при этом правильный вариант - выбрать некий небольшой размер для блока, разбить каждый wav файл на такие блоки, посчитать md5 сумму для каждого блока и затем собрать выходной файл из блоков, совпадающих в наибольшем количестве файлов. Этот вариант требует хорошего знания скриптования (или готового скрипта), но он позволяет при желании добиться максимального качества, недоступного даже для EAC и считать даже сильно порченные диски.
Технических подробностей реализации этих механизмов сказать не могу, если вы можете - то добавьте их в статью. Можно избрать для себя и другой алгоритм.
Обратите, кстати, внимание на смайлы состояния процесса чтения cdparanoia
. Посмотреть их можно набрав
man cdparanoia
Или же на странице проекта: http://xiph.org/paranoia/manual.html
Получение CUE
После получения точного рипа необходимо снять с диска информацию о разметке дорожек и сохранить её в файл cue
. Сделать это можно разными способами. Самый простой - утилита mkcue
:
mkcue > disk.cue
Но она не пишет никакой дополнительной информации. Поэтому лучше использовать для считывания информации о дорожках с диска программу cdrdao
. Она записывает всю информацию в файл toc
, получить который можно командой:
cdrdao read-toc disk.toc
Дальше полученный файл можно конвертировать в cue
с помощью утилиты cueconvert
из пакета cuetools
:
cueconvert -i toc disk.toc disk.cue
В любом случае вам скорее всего придётся вручную редактировать полученный cue
файл, добавляя в него необходимую информацию. Подробней о синтаксисе cue
файлов можно почитать тут: http://digitalx.org/cuesheetsyntax.php
Дальнейшая обработка
Хранить музыку в wav
файлах - не лучший выход, если у вас конечно нет под рукой датацентра с неограниченным дисковым пространством. Обычно файлы сжимают. И тут есть два принципиально различных подхода - сжимать можно обратимо без потери качества или же необратимо.
В первом случае лучше всего использовать кодек FLAC, который поддерживается большинством устройств и плееров, во втором - OGG Vorbis, показывающий лучшие параметры по отношению качество/размер.
В любом случае исходный wav
файл придётся разрезать на треки исходя из информации из cue
файла, а затем полученные отдельные композиции закодировать нужным вам кодеком. После чего прописать правильные теги в полученные файлы.
Есть и ещё один весьма странный подход: кодировать целиком диск в один файл и прикладывать к нему заполненный дополнительной информацией cue
файл. Очевидных минусов у такого подхода два:
- Во-первых
cue
- это файл физической разметки, он никогда не был предназначен для хранения расширенной информации о композициях и совершенно для этого не подходит. - Во-вторых из диска, сохранённого в виде одного файла, никаким образом не достать одну песню.
На самом деле разрезать можно как до сжатия выбранным кодеком, так и после. Об этом чуть позже, сначала про кодирование.
Кодирование
Для сжатия wav
файла в различные форматы в Linux существуют несколько утилит.
Для flac
:
flac -8 -o file.flac file.wav
Для ogg
:
oggenc -q 7 file.wav
Для mp3
:
lame -h -b 320 file.wav file.mp3
Команды приведены с оптимальными опциями кодирования, за подробностями обращайтесь к документации по утилитам.
Разрезание lossless образа на треки
Во-первых wav
- это тоже lossless формат, поэтому по инструкции из этого параграфа можно резать как wav
, так и flac
.
Вам потребуется установить два пакета: cuetools
и shntool
. Ну и кроме того вам понадобится кодек flac
из одноимённого пакета.
Для разрезки wav
файла по информации из cue
можно использовать команду:
cuebreakpoints disk.cue | shnsplit -o wav CDImage.wav
Тоже для flac
:
cuebreakpoints disk.cue | shnsplit -o flac CDImage.flac
Разрезание lossy образа на треки
Для разрезания ogg
и mp3
файлов по cue
файлу существует утилита mp3splt
, поставить которую можно из одноимённого пакета.
Разрезать ogg
по cue
можно так:
oggsplt -c disk.cue CDImage.ogg
Или mp3
:
mp3splt -c disk.cue CDImage.ogg
Прописывание тегов
Итак, вы получили разрезанный на треки образ диска, закодированный в нужный формат. Дело за малым - прописать теги. Теги для flac
, ogg
и mp3
можно заполнить из cue
файла командой:
cuetag sample.cue split-track01.flac split-track02.flac split-track03.flac split-track04.flac
Т.е. вам надо указать cue
файл и файлы всех треков. Можно использовать шаблон:
cuetag sample.cue split-track*.flac
Но в любом случае вам придётся скорее всего вручную дописывать теги. Для этого великолепно подходит программа EasyTag
, доступная в репозиториях. Она имеет простой и понятный GUI-интерфейс, надеюсь, вы разберётесь.