Знакомство с Linux: Часть 20. Видео for Linux

"Нет ничего такого, чего на компьютере нельзя было бы сделать под Linux," - скажет вам заядлый линуксоид. И будет по-своему прав: в том смысле, что все задачи, которые под Linux приходилось решать лично ему, он решил успешно. Впрочем... неужели действительно все?

К чему тут это рассуждение? А вот к чему. Начиная с Windows 95, семейство ОС от Microsoft особенно гордится своей ориентированностью на работу с мультимедийными приложениями. Запустить на исполнение аудиофайл или видеоролик в системе Windows не составляет никакого труда: достаточно пару раз щелкнуть мышкой по соответствующей иконке. Совсем другое дело в различных дистрибутивах Linux. Если заставить музыку звучать еще относительно несложно (хотя с файлами формата mp3 в Red Hat Linux 9 придется немного повозиться), то с видео дела обстоят чуточку иначе. На первый, робкий взгляд, грустновато они обстоят. Но - небезнадежно!

Первое, что приходит на ум начинающему пользователю Linux, пожелавшему насладиться видеофильмом или клипом в рамках осваиваемой им ОС, - это попробовать "путь Windows". То есть просто открыть в графическом файловом браузере директорию с находящимся в ней роликом, дважды щелкнуть по нему и посмотреть, что получится.


Итак, Konqueror (по умолчанию мы работаем в графической оболочке KDE, помните?). Простейший способ доступа к файлам здесь - ткнуть мышью в иконку с папкой и домиком на Рабочем столе, либо проследовать по ссылке "Домой" в Главном меню (открывающемся при нажатии кнопки с красной шапкой в левом нижнем углу экрана, аналогичной по предназначению Windows-кнопке "Пуск"). Добравшись до каталога, где, как вам известно, должен содержаться видеофайл (допустим, в формате .avi), обратите внимание: он отображается особым ярлычком, напоминающим отрезок кинопленки - следовательно, распознается системой именно в качестве контейнера видеоданных. Наведитесь на него мышкой - во всплывшей подсказке будет содержаться масса интереснейших сведений о файле, вплоть до типа применявшегося для его создании кодека и количества кадров в секунду при отображении. Но вот незадача: стоит щелкнуть по иконке, отправляя файл на воспроизведение, как... ровным счетом ничего не произойдет. Точнее - запустится медиаплеер Kaboodle, однако его управляющие кнопки останутся неактивными, и даже темного прямоугольника-экранчика на вашем дисплее не возникнет. В чем тут дело? Возможно, как и со стандартом mp3, в нежелании нарушать чужие авторские права, в данном случае - на формат .avi? Возможно. Но нам-то от этого не легче!

Давайте удостоверимся, что исходная установка Red Hat Linux 9 (полная установка, как вы помните) действительно не содержит инструментария для воспроизведения видео. Воспользуемся в наших изысканиях утилитой "Установка/удаление приложений" из комплекта "Системные параметры" кнопки Главного меню KDE. Заодно и разберемся, как она работает: вполне может пригодиться.

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


Нетрудно сделать вывод, что если вы устанавливаете новый пакет не через rpm, а прямой компиляцией из tar-архива, то сведений о нем в этой базе не появится. Поэтому нелишним окажется ведение (вручную, разумеется) списка развернутых на компьютере tarballs - иначе однажды вы просто забудете, что и зачем ставили. И если придется переустанавливать систему с нуля, то часть таких пакетов может просто потеряться - в итоге вы, запамятовав, каким образом инсталлировалась та или иная программа, неприятно удивитесь, когда обнаружите, что лишились возможности производить в системе привычные действия. Поэтому ведите список самостоятельно компилируемых из tar-архивов программ - и храните сами исходные tarballs где-нибудь в надежном месте (скажем, в пустой изначально директории /opt), чтобы они были под рукой в случае чего.


Итак, выбрав в списке пакетов Sound and Video, посмотрим детальный отчет по этой группе. Оказывается, несмотря на присутствие такой экзотики, как xawtv (просмотр телепередач - при наличии TV-тюнера, конечно), ни единого кодека или программы для воспроизведения видео в списке не обнаруживается. Ну что же... Значит, надо двигаться привычным уже путем. А именно - отправляться на freshmeat.net.

Для постоянных наших читателей не составит труда посетить раздел медиаприложений на сайте freshmeat.net, самом обширном хранилище свободно распространяемого ПО в Сети, и скачать оттуда программу MPlayer - мощное средство для просмотра всевозможных видеофайлов. Как с установочным файлом обращаться, все уже, смею надеяться, прекрасно знают. Но на всякий случай - кратко повторюсь.

Архивный файл (на момент написания статьи это второй пререлиз версии 1.0) разворачивается в каталог /usr/local/src стандартной командой

tar xvjf MPlayer-1.0pre2.tar.bz2

Обратите внимание на ключ j в директиве tar - это указание на то, что архив упаковывался по прогрессивному алгоритму bzip2, а не по более традиционному gzip. По окончании работы tar в /usr/local/src образуется подкаталог Mplayer-1.0pre2. В нем расположены все необходимые для компиляции программы и работы с ней файлы. Если что-то пойдет не так или вы столкнетесь с форматом, работать с которым MPlayer откажется, необходимые инструкции следует искать в локальной поддиректории DOCS. А для оперативной сборки и запуска программы вполне хватит информации, содержащейся в файле README. Его можно, впрочем, вообще не читать: если систему вы ставили в свое время "по полной", значит, компиляция с гарантией пройдет нормально. Достаточно лишь исполнить в командной строке привычную комбинацию:

./configure
make

Затем перейти в режим root при помощи утилиты su и проинсталлировать скомпилированные бинарные файлы:

make install

Собственно, на этом все. Точнее, так: все - если никакие дополнительные кодеки, помимо уже скомпилированных по умолчанию, вам не пригодятся. Но ведь они могут и пригодиться...
Что ж попишешь; могут - значит, могут. Взяв для примера несколько попавшихся под руку видеофрагментов (в основном, трейлеров недавно проанонсированных кинофильмов), лично я убедился, что при просмотре файлов с расширениями .avi, .mov, .mpeg необходимые для их воспроизведения кодеки оказались уже скомпилированными вместе с исходным кодом MPlayer'а менее чем в половине случаев. Значит, надо обратиться к тому богатству дополнительных возможностей, которые приготовили для нас разработчики программы, а именно - подключить к уже работающему ПО добавочные модули. Вот посмотрите: так выглядит текстовая консоль (в которой MPlayer только что был запущен командой mplayer имя_файла:


Здесь всё в порядке - первые две строки информируют о том, каким именно образом декодируются аудио- и видеопотоки. А вот если необходимый аудиокодек не найден, система оповестит об этом примерно так:


Как осуществить подключение дополнительных модулей? Ничего запредельно сложного тут нет. Прежде всего, следует определить, какого именно кодека не хватает системе. В моем случае (файлы .mov, кодированные в формате QuickTime) с воспроизведением собственно видео все было в порядке, однако звук картинку не сопровождал. В чем дело? Ответ содержался в той информации, что проскакивала в окне терминальной сессии запуска Mplayer: "Found unknown audio... QDM2". Изучив справку по программе (файл DOCS/en/codecs.html в дереве инсталляционного каталога), я нашел, что QDM2 - один из стандартных кодеков, применяемых QuickTime, и для его активации необходимо установить в системе соответствующие библиотеки. Направившись по указанному в руководстве адресу, я обнаружил сразу два комплекта QuickTime Codepack DLLs - версий 5 и 6. Для воспроизведения распространяемых сейчас производителями видео .mov-файлов вполне достаточно пятой версии библиотек, но рекомендуется все-таки установить шестую, поскольку работает она быстрее. Что же; файл http://www.mplayerhq.hu/MPlayer/releases/codecs/qt6dlls.tar.bz2 был скачан и распакован. Внутри обнаружились несколько так называемых "библиотек Win32", предназначенных, в данном случае, для корректной обработки видео в формате QuickTime. Эти файлы руководство пользователя рекомендовало поместить в каталог /usr/local/lib/codecs, содержимое которого автоматически инкорпорируется в исполняемую структуру MPlayer в ходе компиляции. Однако такого каталога у меня на винчестере еще не было. Пришлось его завести - перейдя в режим root, разумеется, поскольку правами на создание каталогов в директории /usr/local/lib/ обладает только суперпользователь:

su
mkdir /usr/local/lib/codecs
chmod o+w /usr/local/lib/codecs

Последнее действие необходимо для того, чтобы рядовой пользователь (то есть я из своего основного логина) смог записывать что бы то ни было в этот каталог. И уже после того, как туда было перемещено содержимое архива qt6dlls.tar.bz2, я, выйдя из режима root, скомпилировал MPlayer:

cd /usr/local/src/MPlayer-1.0pre2
./configure
make
su
make install

На этапе создания конфигурационного файла компилятор выдал обнадеживающее сообщение: "Checking for Win32 codec DLL support ... yes (using /usr/local/lib/codecs)". И действительно: запустив в "пересобранном" MPlayer'е .mov-файл, я убедился, что звук полноценно воспроизводится с задействованием свежеустановленных QDMC/QDM2 аудиодекодеков.

Не MPlayer'ом единым, конечно же, живо видео под Linux. Кажется, что число известных медиаплееров попросту необъятно - чтобы в этом убедиться, просто пролистайте список содержимого мультимедийного раздела freshmeat.net проектов. Но на деле из всего этого многообразия регулярной и вдумчивой поддержкой разработчиков могут похвастаться лишь несколько проектов, которые в итоге и оказываются доминирующими. MPlayer - самый известный, но не единственный из них. Заслуживает отдельного упоминания, скажем, проигрыватель Xine.

Заполучить исходный код этого пакета для инсталляции можно на "родном" сайте http://www.xinehq.de/. Для просмотра видео потребуется инсталляция двух компонент программы: набора библиотек xine-lib и одной из возможных оболочек - в моём случае это была стандартная xine-ui. Скомпилировав и установив стандартным способом xine-lib, проделайте затем то же самое с xine-ui, и в вашем распоряжении окажется видеопроигрыватель с полностью графическим интерфейсом. Вот его-то с легкостью можно запускать из "графической командной строки", активируемой в KDE в любое время по нажатию клавиш Alt+F2.

В ходе компиляции пакета Xine обнаруживается, однако, некоторая тонкость. C xine-lib ни малейшей трудности не возникает, но, собирая из исходников xine-ui, вы, скорее всего, обнаружите: на этапе создания конфигурационного файла, при исполнении скрипта ./configure, система окажется неспособной отыскать только что проинсталлированные библиотеки предшествующего пакета.


Каталог /usr/local/lib, куда по умолчанию разворачиваются свежие библиотеки, оказывается для следующего пакета невидимым, если не принять особых мер. Почему такого не происходило для того же MPlayer? Да потому, что он компилировался в пределах единой поддиректории каталога /usr/local/src, и все пути установки дополнительных компонент прописывались незамедлительно и с легкостью. Теперь же нам следует на системном уровне сделать /usr/local/lib общедоступным хранилищем библиотек.
Такая процедура носит название "динамического связывания" (dynamic linking), отвечает за его осуществление утилита ldconfig (см. man ldconfig) и ее конфигурационный файл /etc/ld.so.config. Формат последнего элементарен - в каждой новой строке располагается абсолютный путь к очередному хранилищу программных библиотек. По умолчанию там уже содержится несколько; вашей задачей будет открыть этот файл (проще всего в редакторе vi) и добавить в него соответствующую потребностям настоящего момента строчку.


Разумеется, производить такое действие нужно от имени суперпользователя. Вернувшись из редактора в командную строку root, исполните директиву ldconfig - и динамический указатель на новое хранилище библиотек будет установлен. Вот теперь можно снова обратиться к /usr/local/src/xine-ui-0.9.22 и произвести привычную процедуру установки:

./configure
make
su
make install

Далее с чистой совестью вызывайте на исполнение собственно медиаплеер командой xine. При первом запуске можно сконфигурировать некоторые параметры системы, воспользовавшись автоматически подгрузившейся утилитой xine-setup (впрочем, как правило, это не требуется, - все заработает и так. Затем, по мере надобности, утилиту можно будет вызвать одноименной командой в любой момент).


В итоге на экране появится управляющая консоль Xine в таком вот виде. Нравится?


Еще один достаточно распространенный проигрыватель видео под Linux - Kplayer, предназначенный, как несложно видеть, для работы в графической оболочке KDE. Запускаться программа будет командой kplayer; внешний вид ее рабочего окна полностью определяется текущими настройками KDE, а функциональность - ядром MPlayer, на базе которого она и создана... Вообще, побродив еще какое-то время по freshmeat.net, вы отыщете немало занимательных и полезных видеоплееров. К примеру, существуют специализирующиеся на воспроизведении DVD-(и только DVD)-фильмов проигрыватели; есть программы для запуска VideoCD (старый стандарт MPEG Layer 1) из командной строки и т. п. Есть даже такое извр... простите, изощренное творение программистского гения, как проект apron - утилита, позволяющая воспроизводить видеопоток в... текстовом терминале. Да-да, из стандартных ASCII-символов перед потрясенным зрителем прямо на консоли возникают в той или иной степени притягательные видеообразы. Программа пока не доведена до "представительского" вида - есть проблемы с воспроизведением звука, - но по крайней мере старые добрые VideoCD (и отдельные ролики в их формате) она отображает с уверенным уровнем узнаваемости.


Пробуя загружать и разворачивать на своем ПК те или иные видеоприложения для Linux, вы вскоре заметите: большинство из них не являются самостоятельными проектами, а лишь предоставляют более или менее удобный интерфейс для работы с базовыми библиотеками воспроизведения. Таких библиотек, по большому счету, всего две: это libquicktime - для работы с файлами вормате QuickTime, разумеется, - и libmpeg3 - тоже понятно для чего. Единожды установленные в системе, эти библиотеки обеспечат функциональность практически любой из приглянувшихся вам программ для просмотра видео. Прочем "просмотр" не значит здесь "простое воспроизведение". Linux-видеоплееры обладают богатейшей функциональностью. Они позволяют вручную синхронизировать видео- и аудиопотоки, пропускать картинку через программные фильтры для борьбы с артефактами, корректно "ронять" (drop) лишние кадры, не теряя согласованности со звуковым рядом (если ваша система чересчур нетороплива для работы с мощным потоком видеоданных), и т. п. Все эти замечательные опции рассмотрены на страницах руководства (man pages) для каждой из программ. Наверняка для многих именно наличие полезных дополнительных опций сможет стать определяющим фактором в выборе Linux как мультимедийной системы. А может быть даже, и исключительно мультимедийной.


Согласитесь: неужели же логично загружать на ПК громоздкую, обремененную множеством дополнительных функций операционную систему, если вам всего лишь хочется просмотреть новенький видеодиск? Кстати, многие производители компьютеров брэнднейм снабжают их сейчас функцией воспроизведения DVD-видео без запуска ОС. BIOS сам определяет, что в DVD-привод установлен диск с фильмом, и загружает в память только необходимое для его демонстрации ПО. Очень удобно. Ну, а для тех, кто пока не обзавелся соответствующим брэнднеймом, энтузиасты Open Source подготовили по меньшей мере два мультимедиа-дистрибутива: GeexBox и MoviX.

Именно так: речь о дистрибутивах. Оба пакета распространяются в виде архивированных iso-образов, сразу после распаковки пригодных к записи на CD-R/RW. Обратите только, пожалуйста, внимание, что это именно готовые образы: при записи диска под Linux следует сразу применять команду cdrecord, минуя стадию mkisofs, а если вы предпочитаете Windows и, скажем, Nero Express, то выберите соответствующую опцию - "Запись готового образа".

В ветке MovX сосуществуют два проекта - собственно MovX, фактически минимальный набор системных функций, обеспечивающий работу консольного MPlayer'а, и MovX2 - оснащенная графической оболочкой, более удобная для конечного пользователя система. Именно со вторым вариантом лучше познакомиться тем, кто пока без особенного энтузиазма относится к чудесам вселенной Linux. Кто знает - вдруг, оценив по достоинству простоту и изящество такого решения (еще бы, системные аппетиты урезаны по максимуму, - значит, на воспроизведение видео идет больше ресурсов, и потому оно качественнее), вы захотите попробовать и сам Linux, уже в "полноформатном" режиме. И откроете для себя массу таких возможностей, о которых раньше просто не подозревали - хотя бы потому, что в Linux принято читать руководства к программам, а оттуда волей-неволей узнаешь массу полезного и любопытного. Таким, собственно, образом на свет и появляются заядлые линуксоиды, уверенные, что все в принципе возможное к реализации на компьютере возможно и под Linux. Просто они, регулярно изучая мануалы, почерпнули из них множество полезных "хинтов", которые с успехом и применяют, искренне удивляясь, как такие простые решения не приходят в голову новичкам.

Это и есть, наверное, самый что ни на есть торный путь во вселенную Linux.