(Продолжение,начало см. в МК № 49, 51–52, 1, 4(168, 170–172,175))

Видео в Линуксе

Неделю назад в первой части статьи про видео в Линуксе речь шла об установке видеоплейера MPlayer (http://www2.mplayerhq.hu). Сегодня мы поговорим о работе с ним, и чтобы работа эта не закончилась для вас неполадками в системе, запомните, что эксперименты с различными «движками» вывода видео на экран могут привести к зависанию текущей виртуальной консоли.

На другую консоль можно попробовать переключиться с помощью комбинации клавиш Ctrl+Alt+Fx, где х — номер консоли. В ней вы снова логинитесь и, вероятно, лучше всего будет перезагрузить машину командой reboot. Итак, вы предупреждены! Это не значит, что все будет глючить. Просто в Линуксе вы должны знать, что делаете. А статья вам поможет.

На «полигоне» нам потребуются: какой-нибудь консольный терминал под «иксы», запущенный в нем Midnight Commander (MC), и файл с видео в формате DivX (или любом другом, понимаемом нашим плейером). Консоль нужна нам для того, чтобы подобрать оптимальную командную строку для запуска плейера. Затем вы ассоциируете эту строку с видеофайлами в вашем любимом файл-менеджере, например, Konqueror’е, или используете для создания ярлыка на рабочем столе. Другой вариант задания опций — сделайте в директории ~./mplayer файл config, где прописывайте все нужные вам опции (пример возьмите в исходнике плейера, точнее — в субдиректории /etc, — файл example.conf). Здесь «— это название вашей домашней директории (например, root), а точка перед названием директории mplayer означает, что она снабжена атрибутом «скрытый».

Что до MC, то он послужит для быстрого перемещения по дереву директорий :-). Итак, заходим в папку, где лежит файл с видео — пусть это будет, например, /mnt/cdrom и пускай там лежит, например, фильм «Тупой и еще тупее» —dumb.avi.

В MC включать и выключать его панели можно клавишами Ctrl+o, но для удобства выйдем из него (F10) и будем работать просто с консолью. Теперь можем начинать.

GUI и скины

Cначала несколько февральских тезисов. Тезис первый — GUI (графический интерфейс) работает нормально в Гноме и в Enlightenment. Под KDE функциональны лишь главные его элементы — загрузка файла, запуск-стоп-пауза-прокрутка. Тезис второй — GUI надо запускать только под «иксами». Тезис третий — можно вообще обходиться без GUI.

Если вы решили использовать GUI, то запускайте плейер с параметром
-gui. Вообще-то говоря, графический интерфейс у плейера довольно сырой — сырость касается окон настройки; однако не будем забывать, что плейер находится еще на альфа-стадии разработки (хотел бы я, чтобы РЕЛИЗЫ многих продуктов были бы так же стабильны и качественны, как АЛЬФА MPlayer’а...) Пользователям KDE, которых в нашей стране больше, чем юзеров Гнома, я советую скачать скин Phony () — плейер с ним хоть и занимает значительную часть экрана (смотрите на скриншоты), однако все нужные функции присутствуют на главной панели, а не прячутся в контекстном меню (которое, напомню, в KDE работает кое-как). Впрочем, можете нажимать на клавиши —b (скин-браузер), l (загрузить файл), p (плейлист), e (эквалайзер), Enter (играть), s (стоп), пробел (пауза), -/= на цифровой клаве (громкость), m (вкл/выкл звук).

У плейера нет встроенного скина. Поэтому в любом случае придется скачать хоть один скин со страницы . Далее, если вызвать в плейере скин-браузер и выбрать в нем скин, это не будет означать, что выбор скина сохранится в следующем сеансе работы MPlayer’а.

В текущий момент надежным способом переключения скинов является редактирование файла config. В этой же директории (~./mplayer) лежит папка Skins, куда надлежит распаковывать скины — каждый в свою отдельную субдиректорию. Файл config — обычный текстовый файл. Что с ним делать? Строка формата skin=имя_директории_скина подключает нужный вам скин. Если скинов много, то во избежание нудного переписывания имен скинов просто создайте в этом файле список закомментированных строк, где одна лишена комментария. Например:

#skin=default #skin=plastic #skin=neutron #skin=xine-lcd skin=phony

То есть текущий скин — phony, а если мне нужно будет заменить его на другой, я закомментирую последнюю строку (символом #) и раскомментирую другую.

Скины для MPlayer’а имеют очень гибкий формат — разработчик «шкуры» сам проектирует форму, расположение элементов управления и так далее, поэтому такие скины делать сложнее, чем, скажем, под Winamp. Подробности смотрите в идущем в составе документации файле skin-en.html.

Без GUI

Тоже можно работать, только прокрутка не такая быстрая получится. Управление с клавиатуры:

влево/вправо — прокрутка на 10 секунд;

вверх/вниз — прокрутка на 1 минуту;

pgup/pgdown — прокрутка на 10 минут;

</&gt; — перемещение по плейлисту;

p или SPACE — пауза;

q или ESC — стоп и выход;

+/-— регулятор синхронизации видео- и аудиопотоков, каждое нажатие клавиши равно 0.1 секунды (это помогает решить проблемы тем пользователям, которые в плейерах под Windows жалуются на отсутствие синхронизации :-));

//*— громкость;

o— вкл/выкл OSD (OnScreen Display);

z/x— синхронизация субтитров.

Графика

С помощью команды mplayer -vo help узнаем, какие способы вывода графики нам потенциально доступны (я не говорю, что точно доступны, а именно потенциально :-)) Получаем нечто вроде

xv X11/Xv gl2 X11 (OpenGL) — multiple textures version dga DGA ( Direct Graphic Access V2.0 ) sdl SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!) svga SVGAlib

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

Вначале разберем режимы под «иксы», с GUI или без него — разницы никакой, кроме управления плейером. Самым удобным мне представляется вывод графики через движок библиотеки SDL. Достигается это с помощью команды:

mplayer -gui -vo sdl -fsmode 1 -vc divx4 dumb.avi

Нетрудно догадаться, что опция -gui указывает плейеру на необходимость использования графического интерфейса, -vo sdl говорит о том, что в качестве видеодрайвера у нас будет SDL, а параметр -fsmode 1 нужен для того, чтобы при переключении плейера в Full-screen из KDE/ICEWM не было глюков. В SDL, чтобы масштабировать изображение, достаточно растянуть его окно. Клавиша f переключит плейер в полноэкранный режим, или обратно в иксы. Чуть не забыл — важный параметр -vc divx4 указывает, что для DivX/MPEG4-фильмов мы используем линуксовый декодер DivX4, иначе по умолчанию запустится кодек DirectShow divx_c32.ax (который народные умельцы вытянули из Windows :-))

Еще более универсальным, однако весьма «топорным» является вывод видео просто в «иксовое» окно, для чего служит параметр -x11, а командная строка будет иметь примерно такой вид:

mplayer -gui -vo x11 dumb.avi

Можно попробовать использовать «иксовую» акселерацию, тогда вместо x11 пропишите xv и попробуйте задать -zoom, -x n -y n, -fs, где n— степень масштабирования, а -fs означает «full screen».

SVGA Lib

Отличный способ отображения видео вне X11. То есть его нельзя запускать под иксами, запомните. Лучше испытывать его из отдельной виртуальной консоли, работающей в полноэкранном режиме. Команда запуска будет примерно такова:

mplayer -vo svga -zoom dumb.avi

параметр -zoom нужен для масштабирования видео на весь экран. Без этого параметра видео будет идти в своем оригинальном размере. SVGA Lib имеет свой, отдельный от плейера прекрасно прокомментированный конфигурационный файл, который лежит в /etc/vga и называется libvga.config — он служит для задания параметров видеорежима, работы мыши и клавиатуры (именно под управлением SVGA Lib).

Более специфические способы вывода графики

В настоящее время MPlayer активно затачивается под Radeon и Matrox (vo mga или vo xmga). Для них, а еще под чипы от nVidia и для режима FrameBuffer, существует еще возможность показа видео через новый движок, Vidix (к сожалению, его мне испытать не удалось). Эта функция запускается либо параметром -vo xvidix, либо как субустройство для другого драйвера (в случае неправильного использования это может привести к зависанию).

Вывод через OpenGL-рендер доступен для тех карт, которые поддерживают Utah-GLX, в частности, те же Radeon и Matrox. Вдобавок, для этих двух серий карт, а еще для Voodoo, работает вывод графики на порт Tv-Out (если таковой имеется в вашей модели).

AALib — право, не знаю, для каких целей изобретена эта штука, но рассказать о ней следует. Короче говоря, видео в текстовом режиме — отрада для фанов «Матрицы». Запускается с помощью параметра -vo aa, и что самое любопытное, режим этот имеет множество опций, которые можно получить, введя команду

mplayer -vo aa -aahelp

Там и floyd-steinberg dithering, и управление яркостью/контрастом, и многое другое — пожалуй, ни один из других режимов вывода графики не имеет столь большого числа параметров, как этот, диковинный! Смотреть «текстовое видео» можно почти без ущерба для эстетики, но лишь растянув окно пошире (или в полноэкранной консоли), да еще усевшись подальше от монитора. Для пущего эффекта стоит прищурить глаза — картинка станет четче :-).

Звук

Напомню, что в Линуксе можно использовать разные звуковые подсистемы. По умолчанию MPlayer юзает OSS — стандарт де-факто. Опция: -ao oss. Другие поддерживаемые звуковые движки: sdl, nas, alsa5, alsa9, sun. Если у вас KDE, и нет звука в MPlayer’е, то есть два варианта решения проблемы. Первый метод — отключение звукового сервера KDE. Это делается через K>Configuration>KDE>Sound>Sound Server, там снимаем галочку с Start aRts server... Если у вас Гном, тоже выключите его саунд-сервер (esd). Альтернативный вариант — вывод через все ту же универсальную библиотеку SDL (-ao sdl). Она работает совместно и с KDE sound server и с его гномьим аналогом. Под Solaris и FreeBSD звук надо выводить через -ao sun.

Совет — если звук «рвется», включите опцию для сидюка IRQ unmasking. Это делается с помощью команды:

hdparm -u1 /dev/cdrom

Данный способ может помочь и в работе с другими программами, плейерами в частности.

Примечания

VideoCD

Воспроизведение VideoCD (MPEG1) отличается от DivX-фильмов. Если под Windows достаточно запустить dat-файл, то в Линуксе дело обстоит иначе. Видеодиски следует проигрывать с параметром -vcd <номер трека>. Этот номер дорожки будет скорее всего двойкой (первый трек идет с данными вроде программы автостарта, или заставками — можете попробовать сразу первый трек, вреда от этого не будет). Например:

mplayer -vo svga -vcd 2

В моей конфигурации Линукса MPlayer отказался играть видеодиски через SDL, но успешно показывал видео через x11 и SVGA.

Тормоза

Если видео все-таки тормозит, что делать? Кроме выбора оптимальной для вас видеосистемы, попробуйте использовать параметр
-hardframedrop. Включите для сидюка режим DMA: hdparm -d1 <ваш_сидюк>.

Например:

hdparm -d1 /dev/hdc

В случае успеха выползет нечто вроде

/dev/hdc: setting using_dma to 1 (on) using_dma = 1 (on)

Далее, попробуйте использовать кодек ffmpeg’s DivX/libavcodec вместо windows-версии кодека DivX и стандартного DivX4. В CVS-версии MPlayer’а этот кодек отсутствует (в релизе он есть). Подробности установки кодека смотрите в документации, пункт 2.2.1.2 — откуда скачать, как инсталлировать.

Кстати, инфу об установленных у вас кодеках можно получить вот такой командой:

mplayer -vc help

Вообще говоря, самая подробная информация о параметрах плейера выводится командой man mplayer (если вы правильно установили MPLayer). Там вы найдете опции для «рипания» фильмов и для тончайшей настройки всего, что можно настроить.

Что осталось за бортом?

В этой статье я не коснулся таких возможностей MPlayer’а, как просмотр DVD, использование плейера в качестве TV-тюнера, «грабительство» и конвертирование видео с помощью утилиты mencoder, идущей в комплекте MPlayer’а, и многое другое. Под «многим другим» подразумеваются, кроме всего прочего, нововведения, которые появятся в CVS-версии продукта за то время, когда статья будет на пути к вам, читателям. MPlayer развивается изо дня в день, поэтому почаще заглядывайте на сайт программы —http://www2.mplayerhq.hu.

Кстати, сейчас там развернулась остроумная полемика одного из главных членов команды разработчиков MPlayer’а Габучино с журналистом Джоем Барром, который написал о плейере резко негативную статью. В последнее время Джой Барр стал для ребят из MPlayer Project таким же поводом для коллективного острословия, как пресловутый компилятор GCC 2.6 и драйверы для продуктов nVidia. Да, учите английский! Венгр Габучино пишет свои тексты, наполненные жгучим, как паприка, сарказмом именно на интернациональном языке.

Напоследок добавлю, что MPlayer работает не только в Линуксе, но и в QNX (вывод только на -vo x11), на Silicon Graphics Indigo/IRIX, FreeBSD (но без поддержки DVD), Solaris,начиная с 2.6 (для DVD берите патч с ) и некоторых других ОС.

(Продолжение следует)