Знакомство с Linux. Часть 17. MP3 и другие запретные радости

То ли осень, а то ли бабье лето; то ли дожди, то ли солнце... В любом случае, возобновление наших еженедельных Linux-штудий имеет смысл начать с чего-нибудь яркого, вкусного, шумного, наконец. Скажем - с рассказа о том, как заставить систему зазвучать.


Собственно, настроить звуковую карту под Red Hat Linux на воспроизведение аудиофайлов сложности не составляет. На завершающих этапах инсталляции для любых, даже самых современных, аудиокарт эта операция проводится вообще без каких бы то ни было сложностей. Если по какой-то причине вы эту настройку пропустили, вернуться к ней можно в любое время, исполнив из командной строки (терминальной либо "графической", вызываемой сочетанием клавиш Alt+F2) команду redhat-config-soundcard. Казалось бы, о чём ещё можно говорить теперь в отношении звука? Загружай любимую коллекцию mp3 да подпевай на здоровье. Да не тут-то было!
Дело вот в чём. По умолчанию (сразу по завершении инсталляции) система лишена возможности эти самые mp3 воспроизводить. Как? А вот так. Linux - операционная система с открытым кодом, и распространяется она (а также всевозможные разработанные для нее пакеты) по лицензии GPL. Которая предусматривает, помимо всего прочего, достаточно свободный подход к дальнейшему продвижению программных продуктов. Просто сохраняйте указание на авторство - и этого довольно. Никаких отчислений, никакого лицензирования... Формат же MP3, как всем хорошо известно, запатентован разработчиком, и за его использование, вообще говоря, правообладатель ожидает авторских отчислений. Уж с компаний, производящих ПО с функциями воспроизведения MP3-файлов, - точно.

Вот почему просто так прослушать из-под Linux записанные в вашей домашней директории файлы этого формата не выйдет. Если запустить noatune - стандартный проигрыватель Red Hat, - и попытаться воспроизвести в нем MP3-композицию, в итоге вы получите вместо ожидаемого звука из колонок информационное окошечко на "Рабочем столе". Так, мол, и так, будет сказано в окошечке, из-за некоторых неувязок лицензионного характера подобные файлы вам послушать не удастся. Извините.
Но разве мы собираемся ждать милостей от природы? Ни в коем случае!
Когда линуксоиду недостает каких-либо программных средств - да вот, к примеру, того же самого медиаплеера с поддержкой MP3, - он отправляется... нет, вовсе не на пиратский рынок. А в один из веб-депозитариев бесплатного ПО - в такой, к примеру, как большой и удачно структурированный портал freshmeat.net.


Заглянем прямиком в раздел аудиоплееров. На странице http://freshmeat.net/browse/123/?topic_id=123 располагаются ссылки на сайты множества проектов свободных (в той или иной степени, т. е. с различными лицензионными политиками) программных аудиоплееров под самые разные ОС - в том числе и под Linux. Давайте пока из всего представленного там разнообразия выберем один плеер под названием GQmpeg (адрес его страницы на Freshmeat - http://freshmeat.net/projects/gqmpeg/) и скачаем его в виде архива tar.gz или .tgz. А заодно и полезную программку mpg321 со странички http://freshmeat.net/projects/mpg321. Из описания Gqmpeg можно почерпнуть сведения о том, что он является всего лишь графической оболочкой для плеера командной строки mpg321. И замечательно! Не будем умножать сущностей - и заполучим себе единый музыкальный "движок", который позволит при необходимости запускать музыку на воспроизведение прямо из терминала, а также снабдим его удобным графическим интерфейсом. Вместо того чтобы скачивать для графического режима отдельную программу.

Способов архивации в Linux существует немало. Один из наиболее общеупотребительных - сборка множества файлов воедино при помощи программы tar и упаковка полученного утилитой gzip. На страницах руководства (команда man tar) содержится масса полезной информации о дополнительных опциях, но нам для текущей работы понадобятся лишь несколько: t - тестирование архива, x - его распаковка, v - "вербализация", то есть включение в выходной поток данных комментариев о производимых программой действиях, z - применение gzip-фильтра при распаковке, и f - указание на имя файла, над которым будут производиться все перечисленные операции.

Подойдем к процедуре распаковки ответственно. Прежде всего, определимся с местом. В Windows по умолчанию программы сторонних производителей устанавливаются в C:\Program Files; в Linux же принято разворачивать не входящее в состав дистрибутива ПО в каталог /usr/local. Точнее, если данное ПО изначально наличествует в виде tgz-архива, этот самый архив помещают в подкаталог /usr/local/src (от sources - исходные файлы, "исходники"). По умолчанию такого каталога Red Hat Linux 9 при инсталляции не создает, - ничего, мы сможем это сделать.


Войдем в систему как root. В режиме пользовательской графической оболочки для этого необходимо сперва запустить программу эмуляции терминала, и только потом организовать собственно вход. В качестве программы эмуляции предлагаю воспользоваться konsole - ее можно вызвать, набрав название в "графической командной строке", появляющейся на экране по нажатию комбинации клавиш Alt+F2. Программа терминала стартует от вашего имени - от имени того пользователя, который завел текущую графическую сессию. Если это не root - а я искренне надеюсь, что вы не работаете с системой как root в полноценном графическом режиме, - вам придется воспользоваться в данном окне командой su. Или - что, может быть, предпочтительнее - запустить особую терминальную сессию суперпользователя.
Для этого нажмите мышкой на пиктограмму новой сессии в верхней левой части окошка программы и удерживайте ее секунды две. В выпавшем меню выберите Root console. Очень удобно, что эта консоль по умолчанию оформлена отличными от стандартных цветами - черное на желтом, - так что вы всегда будете помнить: данная сессия - суперпользовательская; нужно вести себя осторожно.
После ввода пароля root’а перед вами возникнет привычная командная строка. Создайте каталог /usr/local/src и откройте (при помощи команды chmod) всем пользователям ПК возможность записывать туда информацию.


Теперь вернитесь к той терминальной сессии, которая открыта от вашего имени (достаточно щелкнуть по соответствующей закладке в окне эмулятора терминала). Переместитесь в новосозданный каталог /usr/local/src и скопируйте туда оба файла, выкачанных недавно с freshmeat.net. Для начала имеет смысл проверить, в порядке ли сами файлы? Исполните команду

tar tvzf gqmpeg-0.20.0.tar.gz.tgz
tar tvzf mpg321-0.2.10.tar.gz.tgz

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


Обратите внимание, что каждый архивный файл при отображении командой tar с опцией t (тестирование) приводится с указанием подкаталога, в котором он размещен. Это значит, что в процессе распаковки данный подкаталог будет создан, то есть относящиеся к этой конкретной программе файлы "исходника" окажутся не где-нибудь, а в особой директории. Это замечательно, потому что не даст нам запутаться:

tar xvzf mpg321-0.2.10.tar.gz.tgz
tar xvzf gqmpeg-0.20.0.tar.gz.tgz

Как видно (команда ls), в /usr/local/src образовались два свеженьких каталога с именами, соответствующими нужным нам программам. Заглянем сперва в mpg321- 0.2.10.tar.gz.tgz - и отыщем там инструкцию, по которой и будем действовать дальше. Как правило, инструкции по установке хранятся в файлах с "говорящими" названиями - INSTALL, README и им подобных.


Указания по развертыванию программы из tarball, как правило, стандартны

Традиционно, процесс установки программы из "исходников" в *NIX-подобных системах состоит из трех частей. Вообще, "исходник" (в англоязычном обиходе употребляется термин tarball, от наименования утилиты tar) написан в подавляющем большинстве случаев на языке С или С++, так что вся установка - это подготовка к компиляции программы, собственно компиляция и включение подготовленных двоичных файлов в общую структуру действующей операционной системы. Если вы выбирали установку Linux по максимуму, как я и советовал, то компилятор С у вас уже установлен и полностью готов к работе. Достаточно просто последовать инструкциям из файла INSTALL.


Они просты: сперва выполняется конфигурационный скрипт - запуском на исполнение команды

./configure

Результатом срабатывания скрипта оказывается так называемый файл сборки программы, Makefile, в котором содержатся инструкции по обработке кода "исходника" имеющимися на данном конкретном компьютере программными средствами. Соответственно, по завершении предыдущей операции достаточно будет исполнить команду

make

И последний шаг - установка: грубо говоря, это попросту добавление двоичных файлов скомпилированной программы в те каталоги, к которым система обращается для исполнения команд (это могут быть /usr/local/bin, /usr/bin и т. п.). И если предшествующие две команды прекрасно можно исполнять "от лица" рядового пользователя, то

make install

сработает лишь в том случае, если ее отдает root. Поэтому прежде чем выполнять данную директиву, "станьте" суперпользователем - при помощи команды su, давно нам знакомой, или вернувшись к суперпользовательской консоли. Из соображений безопасности возможность записи файлов в каталоги /bin, /sbin, /usr/bin, /usr/sbin и т. п. запрещена обычным пользователям.


Приступая к конфигурированию и компиляции, запаситесь терпением: процедура эта (особенно если процессор - не слишком мощный) может занять заметное время. Кстати, после того как все пройдет нормально и обе программы (сперва mpg321, потом gqmpeg) будут скомпилированы и установлены, удалите из каталога /usr/local/src их архивы: они больше не понадобятся. Если же желаете сберечь “исходники” на всякий случай, не поленитесь завести для этого отдельный каталог - /usr/local/tarballs, к примеру.

Что делать дальше? Убедиться, что все прошло не зря, конечно же. Для чего взять первый попавшийся MP3-трек и запустить его на воспроизведение. Сперва - из командной строки, отдав приказание

mpg321 <имя_файла>



Затем вызовите "графическую командную строку" и запустите скомпилированную последней программу gqmpeg.


Появившееся на экране окошко не потрясет вас, быть может, художественным великолепием, но оно вполне функционально и открывает дорогу к массе возможностей по управлению звуком. Просто щелкните, наведясь на него, правой кнопкой мыши и выберите опцию "Playlist..." из открывшегося списка. В окне выбора композиций, которое появится перед вами вслед за тем, отыщите MP3-файл, который пожелаете услышать, и добавьте его в список. Можно, конечно, ограничиться опцией "Open" из выпадающего меню, но формирование плей-листа - очень полезная функция, как известно всякому компьютерному меломану, чей музыкальный архив превышает в объеме пару сотен мегабайт.


Список песен можно сохранить (по умолчанию он окажется запрятанным в каталог .gqmpeg/playlists/ - обратите внимание на лидирующую точку в имени!). Его можно также загружать заново и обновлять - меняя порядок песен при помощи кнопок Top и Down, добавляя отдельные песни и целые каталоги, а также случайным образом перемешивая композиции в списке. Кстати, пара подсказок: чтобы добавить к списку заполненный аудиотреками каталог, в окне Directories слева щелкните правой кнопкой мыши на цели и выберите Add Recursive. А для расстановки песен в случайном порядке уже в правом большом окне исполните команду Randomize list из меню правой кнопки.
Органы управления основного окна программы GQplayer по внешнему виду и функциям достаточно стандартны: прямая и обратная перемотка, контроль громкости, включение/отключение повторов, закольцовывание плей-листа и т. п. Дополнительтные (и весьма многочисленные) опции доступны по нажатию крохотной квадратной кнопочки справа внизу, на которой изображено нечто напоминающее, если вглядеться получше, гаечный ключ.

Остановимся теперь на минутку и задумаемся: каким же образом пуристы-линуксоиды, эти поборники свободного, чистого, не запятнанного приватными лицензиями ПО, обходятся в своей повседневности без оцифрованной музыки? Неужели использование MP3 (ради чего нам пришлось выкачать пару дополнительных программ) - постыдная слабость? А как же быть с действительно удобной оцифровкой честно приобретенных CD, - с оцифровкой в целях личного использования, что даже в просвещенной Европе не считается преступлением?

Да все в порядке с оцифровкой. Просто в мире Linux принято пользоваться для этих целей не разработками Фраунгоферовского института, а полностью свободным и бесплатным (лицензия GPL, опять-таки) программным обеспечением - Ogg Vorbis.


Сколько копий сломано на просторах Интернета в попытках выяснить, лучше или хуже кодируется музыка в формат ogg, чем в MP3, - об этом вам немало может поведать любой поисковик. Тема серьезная, заслуживающая подробного рассмотрения - но вне рамок нашего практикума, конечно. Пока важно одно: на типичном компьютерном конечном аудио оборудовании - имеются в виду предназначенные прежде всего для игр колонки - разница между этими технологиями при схожих начальных условиях неразличима. Что нам, собственно, и сослужит хорошую службу прямо сейчас. Когда мы примемся кодировать "сырые" треки с компакт-диска в формат ogg.


Поскольку технология Ogg Vorbis - открытая, существует немало программ для ее применения. Но прежде, чем браться за перевод аудиоданных в компрессированный вид, надо получить эти данные "сырьем" - хотя бы как файлы wav. И сейчас я обращусь к самой, наверное, культовой из предназначенных для этого программ - cdparanoia: она входит в комплект поставки Red Hat Linux 9. Термин "паранойя" стал составной частью ее накзвания всего лишь потому, что утилита эта способна считывать информацию с заметно поврежденных аудио-CD. Даже при установках по умолчанию cdparanoia будет стремиться прочесть самые трудные участки диска, пока не получит оттуда всю необходимую для качественной расшифровки звука информацию - либо пока не удостоверится, что это физически невозможно.
Простейший способ обращения с программой таков: вы организовываете в своей домашней директории (временный) каталог, перемещаетесь в него и отдаете команду

cdparanoia -vwB

Ключ v, как вы уже, надеюсь, начали привыкать, означает указание программе быть поразговорчивей при исполнении и отображать подробные сведения о своей работе. Литера B способствует разбиению захватываемого с CD аудиопотока на отдельные файлы: на каждый трек, соответствующий отдельной песне, - свой файл. И наконец, ключ w обеспечивает сбережение данных именно в виде wav-файла. Сырые данные - это полуфабрикат; довести его до готовности поможет утилита - oggenc: Ogg Encoder, разумеется. Обращаясь непосредственно к ней, придется поработать ручками.
Помните о таком замечательном изобретении, как Mp3-теги? Это текстовые метки, позволяющие внутри самого файла MP3 хранить информацию об авторе и исполнителях музыки, ее жанре, названии альбома и т.п. Так вот, формат Ogg Vorbis также предусматриваает создание подобных тегов.


Опций у кодировщика oggenc немало, но мы ознакомления ради ограничимся лишь самыми насущными. Вот такими:

oggenc -b 256 -l "<альбом>" -G "<жанр>" -a "<автор>" -t "<название_трека>" track01.cdda.wav

Сразу очевидно, что ключ -b задает среднее значение применяемого при кодировании битрейта (именно среднее, ориентировочное: Ogg Vorbis использует переменный битрейт). Назначение прочих приведенных ключей тоже вопросов не вызовет, а о том, какие у oggenc имеются дополнительные возможности, традиционно можно узнать, листая соответствующие страницы руководства (man oggenc).

Переведя таким образом все "захваченные" с CD треки в сжатый ogg-формат, сотрите файлы wav и переместите получившуюся директорию с оцифрованным альбомом в какое-нибудь приметное место на своем винчестере. Я, скажем, склонен держать всю музыку в границах Windows-раздела. Так она точно будет доступна из-под обеих установленных у меня систем - ведь vfat-устройства у меня монтируются при загрузке Linux по умолчанию, а последние версии популярных медиаплееров под Windows (взять хотя бы легендарный Winamp) прекрасно справляются с форматом ogg. Так что дублировать коллекцию аудио не приходится - что, учитывая ее объем, радует несказанно.

Кстати, чтобы не набивать всякий раз повторяющуюся информацию в командной строке, используйте такую замечательную функцию оболочки bash, как возможность вызова предыдущей набранной команды по нажатии клавиши "Стрелка вверх". Тогда останется только вернуться к названию трека, используя "Стрелку влево", исправить его, а затем и номер wav-трека на следующий, - после чего жать на Enter снова.

Умение обращаться с командной строкой - дело нужное; это мы помним. Но согласитесь, странно было бы предполагать, что в сообществе Linux не удосужились позаботиться об автоматизации оцифровки CD в графической оболочке. Верно ведь? Верно. Программа, сочетающая в себе функции cdparanoia и oggenc - а также еще многих и многих, для которых она является интерфейсом, - носит название Grip и также входит в стандартный набор утилит Red Hat Linux 9 (по крайней мере, его полной установки). Вызвать Grip можно, либо набрав ее имя в графической "командной строке", либо через меню кнопки запуска в левом нижнем углу экрана; той, что с изображением красной шапки, - последовательно через разделы "Звук и видео" и "Дополнительные приложения".


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

Первая: если вы установили в свой CD-привод диск, уже известный сообществу FreeDB, и если связь с Интернетом у вас на данный момент налажена, названия треков, самого диска, его жанра и т. п. объявятся в соответствующих полях автоматически - или в крайнем случае, по нажатии кнопки Initiate/abort FreeDB lookup (нижний ряд, третья слева). FreeDB - это свободная альтернатива проекту CDDB, базе данных по всем выпущенным в мире аудио-компакт-дискам (по крайней мере, оба проекта стремятся к максимальному охвату).


Заполнив все интересующие поля на титульной странице Grip, имеет смысл перейти к закладке Rip -"Захват" - и выбрать опцию Rip+Encode. Здесь все будет произведено автоматически: аудиофайлы взяты с CD, сжаты в формате Ogg Vorbis и записаны в каталог ogg в вашей домашней директории - в подкаталоге с именем группы/исполнителя на первом уровне и с названием альбома - на втором. В качестве имен файлов выступят названия композиций, причем - если не отменить исходную установку явно - пробелы в именах будут преобразованы в символы подчеркивания. Вообще говоря, настраивать Grip можно долго и с большим интересом - благо программа снабжена подробной справочной системой (закладка Help). В частности, можно указывать альтернативные oggenc-кодировщики wav в ogg, формировать названия результирующих файлов по собственному вкусу и т. п. В общем, экспериментировать тут можно очень и очень долго.


На этом аудиовозможности Linux, понятное дело, не заканчиваются. Даже исследуя категорию "Звук и видео" меню запуска Red Hat Linux 9, можно найти немало любопытных приложений - визуализаторов звуковых эффектов, MIDI-утилит и тому подобного. А сколько чудных открытий таит тот же freshmeat.net!


В заключение - еще один небольшой совет: как добавить в "Панель управления" аудиомикшер, который позволит регулировать громкость воспроизведения синтезированного звука, CD, отдельных каналов, уровень записи с микрофонов и т. п. Наведите мышиный курсор на "Панель", щелкните правой кнопкой, выберите в открывшемся меню "Добавить - Аплет - KMixApplet". Обращаться с появившимся на панели приложением очень удобно, и оно всегда под рукой, что немаловажно. Можно выставить во всех используемых графических аудиоприложениях максимальный уровень громкости и забыть об этих регуляторах до следующего крупного апгрейда системы, регулируя общую громкость одним-единственным ползунком. И приберечь силы для того, чтобы уделить свое драгоценное внимание знакомству и с другими аспектами Linux...