Пернатые грабители

Сергей А.ЯРЕМЧУК, 28.04.03, Мой Компьютер Weekly

Я заядлый меломан. Сколько себя помню, у меня всегда была большая коллекция записей. Поначалу это была куча бобин к катушечному магнитофону, затем, когда качество аудиокассет достигло приемлемого уровня, большая часть коллекции перекочевала на них. И конечно же, когда появился компьютер, эстафета его не миновала. Грабил диски я под Windows, пока не сошелся с пингвинами. Теперь мне в этом помогают эти добросовестные пташки.

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

На выходе получим набор файлов - audio_01.wav, audio_02.wav и т.д. Но дополнительно утилита создает также файлы, содержащие информацию о созданных вавниках (audio_1.inf), что позволяет передать информацию программе cdrecord.

Но наиболее популярной программой для снятия треков с аудиодиска является консольная утилита с довольно смешным названием cdparanoia (http://www.xiph.org/paranoia/), которая поначалу представляла собой набор патчей к CDDA2WAV и только с 1998 года начала самостоятельную жизнь; с тех пор эти программы практически ничего не связывает. В самом простом случае команде необходим всего один аргумент - номер трека, в результате получим в текущем каталоге файл cdda.wav:

Причем, чувства юмора у разработчиков хватило не только на название - обо всем происходящем при перегонке диска можно судить по OUTPUT SMILIES. Так вот такая рожица - :-) - означает нормальный ход процесса; :^D - его окончание, значения остальных ищите, как всегда, в man :-(. При необходимости можно в последней позиции указать название выходного файла. Понятно, что в большинстве случаев грабят сразу весь диск. Для этого используем все ту же опцию -В (--batch). После чего при необходимости можно указать ряд дополнительных, не забыв поставить два тире, что значит "весь диск". Так, например, можно сграбить мелодии начиная с двадцатой секунды первого трека и до тридцатой секунды четвертого.

Получившиеся в результате файлы будут иметь названия track01.cdda.wav, track02.cdda.wav и т.д.

Какую программу использовать - дело ваше, но замечу, что cdparanoia автоматически определяет устройства, в том числе и SCSI, с которыми cdda2wav иногда работать категорически отказывается, вдобавок, не пасует перед низкокачественными дисками, исправляет ошибки и вообще проще в использовании. К тому же вот-вот должно появиться следующее, IV поколение программы, или версия 10.

Итак, файлы у нас в руках - чтобы они не занимали много места, требуется их закодировать в какой-то подходящий формат. Если раньше пользователю и выбирать-то, собственно, не из чего было, единолично правил бал .mp3, то с появлением его открытого конкурента Ogg Vorbis (OggVorbis is free!) ему пришлось потесниться. Интересно было наблюдать на западных форумах, как росло число сторонников Ogg Vorbis по мере приближения к окончательному релизу. Для себя я однозначно свой выбор остановил на Ogg, а для дисков, которые попадают ко мне на время, чтобы сохранить оригинальное звучание, выбрал один из lossless-форматов FLAC (http://flac.sourceforge.net), выдающий на выходе наименьший по размеру файл относительно .wav. Впрочем, различных lossless-форматов существует около десятка, и выбирать есть из чего. Сегодня же поговорим о старичке MP3, которого не так легко сбросить с вершины. Ситуация интересна тем, что этот стандарт не определяет никакого точного стандартного математического алгоритма кодирования, его разработка целиком и полностью остается на совести разработчиков-кодеров, поэтому существует несколько кодеков, с помощью которых можно перекодировать файл. Все они отличаются условиями лицензирования, психоакустической моделью (что в свою очередь влияет на качество звучания полученного выходного .mp3-файла на различных битрейтах), а также дополнительными возможностями вроде поддержки кодирования с переменным битрейтом. В Linux наиболее популярны кодеки Lame (http://www.mp3dev.org/mp3/), bladeenc (http://bladeenc.mp3.no), gogo (http://homepage1.nifty.com/herumi/gogo_e.html) и mp3enc (http://www.iis.fhg.de/amm/download). Хотя есть, конечно же, и другие, вроде xingmp3enc или l3enc, но я думаю, и того, что есть, вполне достаточно. Из перечисленных gogo, происходящий, кстати, от Lame, - наверное, самый быстрый; mp3enc отлично показывает себя на высоких битрейтах, но в работе самый медленный; bladeenc на высоких битрейтах также работает отлично, на низких слушать невозможно; наконец, Lame (Lame Ain't an MP3 Encoder), мой любимец, - пожалуй, самый популярный, вдобавок свободный и активно развивающийся, со своей собственной психоакустической моделью GPSYCHO, имеет версии для различных платформ; многие фирмы используют исходные коды LAME для включения поддержки МР3 в свои продукты, а библиотеки на его основе можно встретить в таких популярных программах под Windows как Audiograbber, EAC, Cdex и многих других. На нем я и остановил свой выбор. Доступных параметров кодирования в программе немеряно, все они описаны в соответствующем man’е; также можно ознакомиться с ними, набрав lame -? (--help - для короткого варианта). Остановлюсь на наиболее интересных. Самый простой вариант - просто набрать в командной строке lame audio.wav, и в результате на выходе получим файл audio.wav.mp3 c постоянным битрейтом 128 Кбит/с. Но по моему мнению, слушать музыку с таким качеством можно лишь на колонках за 10 евро десяток, поэтому указываем битрейт с помощью опции -b, а чтобы затем не переименовывать кучу файлов, можно вторым аргументом указать имя выходного файла.

Кодирование с постоянным битрейтом, впрочем, приводит к нерациональному использованию дискового пространства и потере качества в особенно насыщенных музыкальных эпизодах, поэтому в последнее время продвинутые кодеки позволяют кодировать с переменным битрейтом (variable bitrate, VBR), впервые появившимся приблизительно в 1998 году и использованным фирмой XingTech в своем кодеке (к слову сказать, качество последнего так и не поднялось на уровень Fraunhofer IIS ISO-based кодеров (Internation Standards Organization)). Для этого используем параметр -v, а с помощью -V # можно дополнительно указать качество такого кодирования. По умолчанию используется 4, 0 - высшее качество (получившийся файл будет больше), 9 - низшее (файл меньше), или с помощью -b и -B указываем минимальный/максимальный битрейт соответственно.

Засада в том, что ни один из известных мне проигрывателей пока не поддерживает данного расширения, хотя XMMS вроде как должен бы. Но зато отлично работает другой режим - average bitrate (ABR), это что-то среднее между constant bitrate CBR и VBR, при этом указывается среднее значение, и при необходимости программа сама увеличивает или уменьшает его; о характере кодирования в таком режиме можно судить по Рис. 1. Закодировать файл таким образом можно с помощью опции --abr <bitrate>:

Кстати, файл, закодированный такой строкой, получается на 10% меньше, чем кодированный с постоянным битрейтом 256, а качество не отличить. По умолчанию Lame на нижних битрейтах (до 160 Кбит/c) использует режим Joint stereo для кодирования стереоси гналов, при этом левый и правый каналы кодируются вместе, но один канал кодируется полностью, а во второй прописывается разностная информация т.е. отличие первого от второго. Есть несколько стандартов представления информации joint stereo, но всех их объединяет существенный недостаток: плохая передача стереоэффектов, в частности, портится фазовая информация. Качество можно изменить, задав режим с помощью опции -m, при этом возможны варианты: (m)ono, (s)tereo (кодируется два канала, но кодер может выделить при необходимости больше места одному из них - оптимальный вариант, используется по умолчанию на высоких битрейтах), (f)orce (подобен предыдущему, только Рис. 1.под оба канала выделяется одинаковое количество места).

Обратите внимание на строку Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz (Рис. 1) - для каждого битрейта используется свой фильтр, но его можно изменить вручную с помощью -q <arg>, где <arg> = 0...9 (по умолчанию используется 5), или с помощью -h (рекомендуемый эквивалентен -q 2, в man’е написано "maybe hight quality"), или же -f (быстрый, -q 7). Режим -f отключает психоаккустические фильтры, что делает звук чище на высоких битрейтах, но существенно ухудшает на низких - наверное, самый спорный режим работы. Кстати, при компиляции Lame с поддержкой Ogg Vorbis возможно кодирование и в этот формат, с помощью опции –ogg.

Я могу на эту тему рассказывать долго и нудно, но незачем, поэтому поехали дальше. Естественно, можно объединять эти две программы, выполняя последовательно:

Или используя каналы (черточка означает stdin - стандартный ввод команды).

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

И конечно же, не обошлось без фронт-эндов. Хотя, честно говоря, ни один не запал мне в душу. Тем, у кого есть CD-RW, чтобы не захламлять кучей дублирующих программ систему, достаточно будет подобрать себе соответствующую программу для записи - они в большинс тве своем оснащены всем необходимым. Для тех, кто может себе позволить установить KDE или хотя бы библиотеки, наилучшими программами будут Arson (Рис. 2. Mp3c http://arson.sourceforge.net) или CD Bake Oven (http://cdbakeoven.sourceforge.net).

Из консольных утилит я бы в первую очередь выделил mp3c (Рис. 2), которую можно найти на http://www.wspse.de. Причем советую скачать вариант помеченный как all, размером он на 150 Кб больше - в этом архиве содержится все необходимое для дальнейшей работы программы. По умoлчанию программа использует кодек mp3enc, который входит в комплект all. Но лично я опять же рекомендую Lame, поэтому в ответ на приглашение нажимаем F2 и заходим в меню конфигурации. Здесь в полях (вход через Enter) убираем все упоминания о серверах CDDB - вряд ли вам захочется, чтобы программа лезла всякий раз в Интернет, чтобы заполнить поля ID3-тэга. Затем указываем каталог, в который будут помещаться готовые файлы, и образец для образования имени файлов и плей-листа, который программа создает автоматически. Советую также включить режим encode on-fly as default, иначе каждый полученный вавчик придется кодировать отдельно. Здесь же можно подкорректировать параметры для cdparanoia

Вместо mp3enc я прописал lame с соответствующими параметрами, хотя никто не возбраняет использовать oggenc, чтобы кодировать в Ogg Vorbis. Есть также поля, позволяющие заполнить информацию об артисте, жанре, альбоме и т.д. После всего этого записываем конфигурацию и выходим. Теперь обновляем информацию о вставленном диске V и нажимаем F3, чтобы перегнать весь диск.

Чтобы запускать данную программу с помощью меню в файл ~/.icewm/menu, я вставил такую строку:

Следующая программа - dekagen (Рис. 3) (http://userpage.fu-berlin.de/~mbayer/tools), размером 23 Кб; обладает подобной функциональностью, позволяет использовать в качестве кодека практически любой из известных (при условии, что он установлен в системе), но обладает единственным недостатком - кодеку можно передать только битрейт, об остальных возможностях придется забыть. Можно, конечно смухлевать, добавив к переменной ENCODER в файле ~/.dekagen/dekagenrc дополнительные параметры, но они будут каждый раз обнуляться при обращении к пункту меню настроек. Впрочем, как кому нравится.

Еще стоят упоминания утилиты jack (http://www.home.unix-ag.org/arne/jack), написанная, кстати, на Питоне (Рис. 4), DAGRAB (http://web.tiscalinet.it/marcellou/dagrab.html) и abcde (http://lly.org/~rcw/abcde), позволяющие производить процесс перегонки аудиодиска с командной строки и, естественно, обладающие возможностью передачи большего количества параметров, чем всевозможные фронт-энды.

Рис. 3. Dekagen Рис. 4. DAGRAB

Теперь об утилитах, работающих под X-Window.

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

Следующий экспонат - XMultiGrab, Рис. 6 (http://xmultigrab.rvb-web.de), позволяет дополнительно получить кодированный файл. Интерфейс разделен на несколько вложенных меню, в каждом из которых устанавливается по одному параметру, что позволяет новичку сходу освоить программу. В качестве кодека предлагается lame (с режимами VBR и оgg), gogo и BladeEnc. Из параметров можно выставить разве что битрейт, качество, разряд. Скудновато, по сравнению с командной строкой. Но вот чего нельзя отнять - все-таки намного удобнее заносить информацию в ID3-тэги.

Рис. 5. Xcdda2wav Рис. 6. XMultiGrab

RipperX (http://adam.kaist.ac.kr/~wineking/ripperX) - довольно симпатичная на вид и в использовании удобная программа (Рис. 7). Главное, что она не только позволяет задавать битрейт, что само собой разумеется в таких программах, но и знает о таких режимах как VBR, и если нет возможности настроить себе параметры по душе в поле Extra Options, всегда можно их передать программе. И еще одна удобная штука - для каждого CD можно с помощью соответствующей опции автоматически создавать свой каталог, что при массовой перегонке только ускоряет процесс и снимает риск затереть другие файлы. Дополнительно с помощью внешних программ можно прослушать как Audio CD, так и получившиеся файлы.

И конечно же, программа, которую можно встретить в каждом дистрибутиве - Grip (Рис. 8). С помощью ее можно реализовать все возможности, которые доступны в командной строке. Понимает все кодеки, в том числе знает и о flac, дополнительно можно задать свою собственную программу с помощью пункта other. Все основные опции, которые можно задать в командной строке, доступны в виде включателей (в том числе и такие как Содрать часть трека :-)), остальные можно здесь же отредактировать через командную строку. Я бы сказал, что эта программа как раз для тех, кто хочет полностью контролировать процесс и не боится поближе познакомится с первоосновами, то бишь с консольными утилитами.

Рис. 7. RipperX Рис. 8. Grip

Для поклонников оконного менеджера WindowMaker в самый раз будет апплет Mp3Maker (http://www.users.comcity.de/~schueler), предназначенный как раз для этих целей, - и красиво, и всегда под рукой, при этом позволяет контролировать все необходимые опции.

С помощью плагинов oggre и out_lame (Рис. 9, ) к проигрывателю XMMS, можно конвертировать файлы в Ogg Vorbis или MP3 соответственно. Для этого после установки необходимо в меню Свойства выбрать в качестве выходного устройства нужный плагин, и тогда вместо проигрывания файлы будут кодироваться в соответствующий формат. При этом в свойствах каждого можно установить необходимые параметры.

Рис. 9. Oggre Рис. 9а. Оut_lame

Как видите, выбирать есть из чего. Могу добавить, что кодирование с моим слабеньким процессором занимает кучу времени, как астрономического, так и процессорного. В Windows мне было проще перегнать диск на компьютере у товарищей с более мощной конфигурацией, чем мучить свой, ведь пока идет процесс, заниматься чем-либо еще противопоказано, приходится ждать окончания. В Linux ситуация иная. Ограбление диска нисколько не мешает заниматься мне остальными делами, разве что фильмы нельзя смотреть. Вот так.

Linux forever.





Источник - LinuxBegin.ru
http://linuxbegin.ru

Адрес этой статьи:
http://linuxshop.ru/linuxbegin/article310.html