(Продолжение,начало см. в МК № 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 минут;
•</> — перемещение по плейлисту;
•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 берите патч с ) и некоторых других ОС.
(Продолжение следует)
