Отправляет email-рассылки с помощью сервиса Sendsay

KirovLUG: пользователи Linux в Вятке

CD гребер

Грабим аудио треки

Превратить свою фонотеку, состоящую из компакт-дисков, в коллекцию аудио
файлов -- задача вроде бы тривиальная, но и здесь есть множество
подводных камней.

Так как же правильно это сделать?

Вот об этом мы и поговорим.

В Linux, как принято в большинстве приложений, используемых на данной
платформе, процесс кодирования аудио разбит на два этапа: собственно
ограбление audio-CD т.е. снятие с него треков и сохранение их на диске в
формате .wav с последующим конвертированием в любой из имеющихся форматов.

Все необходимое для процесса грабления и последующей конвертации аудио
треков в дистрибутиве Linux уже есть:

cdparanoia для непосредственного грабления с CD-audio в файл wav.

lame для кодирования wav файлов в mp3.

И так приступим.

Чем потрошить?

Первый этап -- извлечение музыки с носителя. Обычно эта процедура
называется <<грабить>> (от английского глагола to grab -- хватать) или
<<рипать>> (to rip -- потрошить). Суть <<рипания>> в том, чтобы преобразовать

звуковые дорожки, взятые с аудио-CD, в знакомые каждому wav-файлы
аналогичного качества.

В каждый дистрибутив Linux входят две консольные утилиты,
предназначенные для <<потрошения>> музыкальных CD, -- cdda2wav и cdparanoia

Последняя является наследницей cdda2wav и основанная на ее же коде вот
ее и будем использовать.

Можно для этой цели воспользоваться давно не обновляемой CDDA2WAV
(ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha), но если в компьютере
установлен CD-RW, то так как для его работы используется эмуляция SCSI,
дополнительно потребуется указать устройство, с которого будет
происходить считывание.

cdparanoia автоматически определяет устройства, с которыми cdda2wav
иногда работать категорически отказывается, в добавок с ней удобнее
работать и может прочитать даже низкокачественный диск.

Для получении информации о содержании диска выполним команду cdparanoia -Q

После этого на экран будет выведена таблица с описанием содержимого CD --
количество треков, длительность каждого из них и т. п. Обратите внимание
на регистр параметра Q (именно большая буква).

Командой cdparanoia -B сграбим весь диск целиком

Получившиеся в результате файлы будут иметь названия track01.cdda.wav,
track02.cdda.wav и т.д. файлы будут лежать в той директории от куда мы
запускали cdparanoia, т.е. если мы находились /home/user то файла будут
сграблены именно в этот каталог.

-B, --batch пакетная обработка -- каждый трек сохраняется в отдельный файл;

-S, --force-read-speed /n/ извлекать треки со скоростью n (относительно
1X CD-ROM);

И так с <<потрошением>> мы справились

Кодирование.

Итак, файлы у нас в руках чтобы они не занимали много места, требуется
их закодировать в какой-то подходящий для нас формат. Им будет
достаточно распространенный старичок MP3.

Ситуация интересна тем, что этот стандарт не определяет никакого точного
стандартного математического алгоритма кодирования, его разработка
целиком и полностью остается на совести разработчиков-кодеров, поэтому
существует несколько кодеков, с помощью которых можно перекодировать
файл. Все они отличаются условиями лицензирования, психоакустической
моделью (что в свою очередь влияет на качество звучания полученного
выходного .mp3-файла на различных битрейтах), а также дополнительными
возможностями вроде поддержки кодирования с переменным битрейтом.
Грамотное сжатие в mp3 формат на слух ни чем не отличается от оригинала.

Соответственно для данной операции нам нужен кодер, я рекомендую
использовать LAME.

Самый простой вариант просто набрать в командной строке lame audio.wav,
и в результате на выходе получим файл audio.wav.mp3 c постоянным
битрейтом 128Кбит/с, что не есть, по моему мнению, гуд.

С жатый файл с таким битрейдом отличается от оригинала, но при битрейде
256 кбит/с качество сжатого файла на слух не отличим от оригинала.

Ключик -b указывает с каким битрейдом будем кодировать, audio.wav файл
источник, что бы не переименовывать полученный на выходе файл
audio.wav.mp3 укажем его название audio.mp3

lame -b 256 audio.wav audio.mp3

Кодирование с постоянным битрейдом, впрочем, приводит к нерациональному
использованию дискового пространства и потере качества в особенно
насыщенных музыкальных эпизодах, но в последнее время кодеки позволяют
кодировать с переменным битрейдом, но здесь нас ждет засада в том, что
ни один из известных мне проигрывателей пока не поддерживает данного
расширения. Но зато отлично работает другой режим average bitrate (ABR),
это что-то среднее между постоянным и переменным битрейдом, при этом
указывается среднее значение, и при необходимости программа сама
увеличивает или уменьшает его. При этом файл получается в среднем на 10%
меньше чем с постоянным битрейдом. Пример:

lame --abr 224 -b 64 audio.wav audio.mp3

Теперь немного о синтаксисе команды и ее ключах (параметры).

lame < параметры> file1 file2, где

file1 - файл источник

file2 - конечный файл

-b <битрейт> -- этот параметр указывает битрейт, с которым вы можете
компрессировать звук

-V <значение> -- включает кодирование с переменным битрейтом и задает его
значение (от 0 до 9). Число, передаваемое параметру V, означает не
битрейт, а качество звука. Ноль -- наилучшее 9 - наихудшее. Пример:
lame -h -V 0 audio.wav audio.mp3

--vbr-new -- включает использование нового алгоритма VBR

-h -- включает наивысшее качество кодирования. В ущерб скорости.

-m s -- включает стерео режим.

--decode -- указывает на то, что входной файл надо декодировать, т.е.
получить из mp3 wav.

--abr <значение> -- включает кодирование со средним значение битрейда.

Если хотите знать больше, то читайте man lame.

Автоматизируем процесс.

Немного поэкспериментировав и один раз подобрав приемлемые параметры, я
счел наиболее удобным вариантом создание различных быстро запоминающихся
алиасов или скриптов. В последнем случае, поместив все команды в файл и
сделав его исполняемым, можно просто создать ярлык на рабочем столе и
перегонять диски нажатием одной единственной кнопки. Круто.

И так приступим.

Нам понадобиться небольшой исполняемый скрипт, который мы напишем сами.

Вот его листинг:

#!/bin/sh
eject -t # задвинуть лоток CD-ROM
cd /home/music # Перейти в каталог где будут лежать конечные файлы
cdparanoia -B # Грабим весь диск целиком
for i in *.cdda.wav; do # начало цикла
lame -b 256 -h -m s $i ${i:0:7}.mp3 # кодируем все wav файлы
done # конец цикла
eject # выдвигаем лоток CD-ROM

В принципе все понятно кроме двух строк кода, на которых остановимся
поподробнее.

for i in *.cdda.wav; do # начало цикла
В данной строке мы объявляем i как переменную, которая получает
различные значения, т.е. переменной i

присваиваются имена файлов в каталоги по маске cdda.wav

lame -b 256 -h -m s $i ${i:0:7}.mp3
Теперь разберемся с LAME

синтаксис команды следующий

lame < параметры> file1 file2, где

file1 - файл источник

file2 - конечный файл

параметр -b <битрейт> -- этот параметр указывает битрейт, с которым вы
можете компрессировать звук

параметр -h -- включает наивысшее качество кодирования. В ущерб скорости.

параметр -m s -- включает стерео режим.

$i -- файл источник

${i:0:7}.mp3 -- конечный файл

Так как после того как сграбим треки cdparanoia полученный файл имеет
следующий вид track01.cdda.wav, а после его кодирования lame примет вид
track01.cdda.wav.mp3, что не удобно, то мы возьмем из переменной i
только первые 7 символов и добавим расширение mp3

Дополнительная информация

Более подробно можно почитать в

man cdparanoia

man lame

bash-prog-howto

aka Crion

Ответить   ivan Mon, 11 Apr 2005 09:41:02 +0400 (#348616)

 

Ответы:

ivan пишет:

Не консолью единой жив линуксоид. Есть такая штука - grip, использует
внешние сдиратель и кодек, умеет опрашивать freedb.freebd.org для
получения информации о диске. Вообщем, довольно навороченная gui надстройка.

еще полезен ключ -d - собствеено в каком устройстве находится диск (не у
всех это /dev/cdrom ;) )

Исторически сложилось, что для хранения музыки я, по возможности,
использую формат ogg, так что не помешает про него рассказать.
Реальный пример:
oggenc -b 192 -m 32 -N 02 -t 'Shut Your Mouth' -d 2002 -l 'Nothing
Remains The Same' -a 'Pain' -G 'Rock' -n '%l/%n - %t.ogg' track02.cdda.wav
Производим сжатие второго трека 'Shut Your Mouth' с альбома группы
'Pain' 'Nothing Remains The Same' 2002 года в файл './Nothing Remains
The Same/02 - Shut Your Mouth.ogg' сразу с указанием необходимых тэгов
Собственно параметры обозначают:
-b 192 - средний битрейт получаемого файла 192 kbs, либо через
качество - '-q n'
-m 32 - минимальный битрейт 32, для максимального битрейта - '-M b'
-N, -t, -d -l, -a, -G - указываем как должны выглядеть теги,
полученного сжатого файла
-n pattern - шаблон для имени сжатого файла.
Как видно так приходится кодить каждый файлы по отдельности :(, хотя вся
загвоздка состоит в подстановке нужных названий песен :-/. Кстати, может
кто просветит как искать русских исполнителей на freedb.freedb.org,
какую кодировку использовать?

Ответить   Mon, 11 Apr 2005 15:52:14 +0400 (#348838)

 

в БЗ?

Ответить   Tue, 12 Apr 2005 09:14:57 +0400 (#349233)