Всевидящий MPlayer

Чем вы смотрите видео? Если у вас уже есть свой любимый плеер, менять который вы не собираетесь, тогда дальше можете не читать. Если же вы ищете что-то по-настоящему мощное – эта статья для вас.

Некоторое время назад попался мне дистрибутив консольного мультимедийного плеера MPlayer для Win32. Я не опечатался – плеер действительно консольный, что немудрено, учитывая его линуксовое происхождение. Честно говоря, сначала я воспринял это как издевательство над честным пользователем, привыкшим к GUI-софту... В то же время, я не мог не оценить скорость работы и всеядность
MPlayer: запуск, а также перемотка видео происходят мгновенно даже на самых «кривых» файлах, поэтому я оставил его в качестве вспомогательного плеера. По мере использования выяснилось, что программа хорошо играет битые, недокачаные файлы, имеет кучу всевозможных опций, и, что самое главное, готова работать на практически «голой» системе – она не требует установки кодеков и даже может напрямую использовать аппаратные возможности видеокарт, хотя это и требует некоторого шаманства. Позже я обнаружил у MPlayer одну замечательную фишку: если по сети тянуть какой-нибудь фильм, то просмотр его можно начинать, не дожидаясь окончания закачки. Остальные плееры в этом случае либо вообще отказываются открывать файл, либо смотрят только тот отрывок, который уже был скачан на момент запуска.
В конце концов, консольный MPlayer вытеснил все GUI-видеоплееры с моей машины...
Заинтересовались?

Всеядное всемогущество
Перед тем как перейти к практической части, расскажу ещё немного о возможностях этой программы.
MPlayer может без установленных в системе кодеков проигрывать почти все известные видеоформаты (не говоря уже об аудио), поддерживает вывод с помощью различных драйверов (возможен даже аппаратный – в обход операционной системы), умеет смотреть потоковое видео, работает с ТВ- и радио-тюнерами, а также позволяет использовать свои возможности сторонним программам...

Вместе с плеером поставляется утилита mencoder, столь же мощная, как и он сам. С её помощью можно конвертировать все понимаемые плеером медиаформаты между собой.
Однако перед тем, как искать в сети дистрибутив MPlayer, учтите, что поставляется он, как и любой GNU-софт, в исходниках. Для *nix-мира это вполне обычное дело: сборка программы на каждой конкретной машине позволяет как можно лучше «заточить» её под себя. Так, при компиляции можно отказаться от использования каких-либо кодеков, указать используемый процессор...
Но не пугайтесь: без компиляции можно обойтись. В мире есть достаточно энтузиастов, которые уже всё сделали до вас. Существует множество неофициальных сборок (несмотря на «неофициальность», они вполне законны, так как не нарушают условий GNU-лицензии), которые включают в себя, чаще всего, плеер с откомпилированными кодеками, документацию и графический фронтенд (надстройку над консолью). Впрочем, набор может быть и другим, поэтому предварительно стоит прочитать описание того, что скачиваете. Я бы порекомендовал загрузить только набор скомпилированных файлов из оригинального дистрибутива, а уже потом решить, нужно ли вам что-то ещё (ссылки см. во врезке).

Настройка
Первый способ настройки и использования – это работа с плеером «как есть». А «как есть» – это через командную строку, с указанием кучи параметров вручную. К примеру, запустив программу таким способом:
MPlayer -playlist filename.pls -shuffle
мы заставим плеер играть в случайном порядке все файлы из плейлиста. А вот так:
MPlayer filename.avi -fs -idx -ss 12:30
мы сможем просмотреть на полном экране видеофайл, в котором отсутствуют первые 12 минут.
В качестве эксперимента попробуйте сделать вот так (очень интересный эффект):
MPlayer filename.avi -fs -rootwin

Да, это сложно и непривычно, зато какие горизонты открываются! Скажем, пользователи Total Commander могут создать набор кнопок на все случаи жизни, а пользователям FAR вообще не привыкать работать с командной строкой...
На самом деле, всё не так ужасно, ведь совсем не обязательно при каждом запуске MPlayer передавать ему кучу параметров. Можно указать настройки по умолчанию, которые будут использоваться в дальнейшем.
Конфигурация плеера хранится в файле mplayer\config. Править его нужно ручками, а точнее – любым текстовым редактором. Формат его чрезвычайно прост:
параметр=значение
где параметр – это один из ключей командной строки MPlayer, а значение – то, чему этот ключ равен. Список ключей и их значений можно найти в мануале. Их, по-моему, около сотни, если считать взаимоисключающие. Конечно, вписывать все ключи смысла нет, достаточно самых важных:
[ vo= ] – указывает драйвер для вывода видео. Как уже сказано выше, MPlayer их поддерживает множество, и каждый имеет свои плюсы. Для Windows рекомендуется использовать значение DirectX (работает быстрее всего), однако можно поэкспериментировать со значениями gl (OpenGL – в этом случае MPlayer будет выводить изображение как текстуру на полигоне, что позволяет улучшить изображение клипов с низким разрешением) или vidix.
Про последний стоит сказать отдельно: этот видеоинтерфейс, изначально созданный под Linux, с помощью собственных драйверов обеспечивает вывод картинки только аппаратными возможностями видеокарты. Теоретически с помощью такого ухищрения можно смотреть видео даже на очень слабых машинах. Однако vidix (winvidix для Windows) будет работать только в том случае, если обнаружится соответствующий драйвер для вашей карточки; обычно они находятся в каталоге mplayer\vidix. Выбираем там походящий (например, nvidia_vid.so для карт на чипах от NVIDIA) и указываем его в качестве дополнительного параметра через двоеточие (winvidix:nvidia_vid.so). Ещё потребуется установить драйвер для прямого доступа к железу – ищите его в каталоге drivers. К стыду своему, заставить MPlayer работать через vidix в XP я так и не сумел, но в свежеустановленной Slackware этот режим заработал превосходно.
[ double= ] – указывает, использовать ли двойную буферизацию видео. Если вкратце: при включении этой опции MPlayer будет заранее декодировать кадры, что позволит избежать «подтормаживаний» картинки, особенно при просмотре видео с медленных носителей. Оставляем yes по умолчанию.
[ font= ] – указывает шрифт, используемый для отображения OSD. MPlayer хорошо «понимает» ttf-шрифты, так что выбираем свой любимый. Можно указать полный или относительный путь к файлу шрифта, но, по-моему, удобнее будет скопировать в папку MPlayer нужный и просто вписать сюда имя файла.
[ framedrop= ] – разрешает или запрещаем пропуск кадров, если они не успевают декодироваться. На старых машинах без включения этой опции мы будем смотреть «слайдшоу», включив – увидим более-менее нормальную картинку. На современном железе особого смысла настройка не имеет, но на всякий случай рекомендуется указать yes.
[ fs= ] – запуск видео в полноэкранном режиме (yes) или в окне (no). Кому как нравится.
Остальные опции, если они уже вписаны в конфиг, имеет смысл не трогать, либо прочесть о них в документации и решить самостоятельно. Само собой, вы можете добавить любые ключи, какие посчитаете нужными – опять же, читаем документацию.
Следующее, что стоит сделать, – это настроить под себя управляющие клавиши. Настройка также сводится к правке конфигурационного файла, на этот раз – input.conf (также находится в папке MPlayer). Формат записи тут немного иной: Клавиша Действие Параметр (если нужен). Например: UP volume +1.
Список дополнительных (т. е. кроме всех печатных) управляющих клавиш можно получить, запустив MPlayer с ключом -input keylist, список команд – с ключом -input cmdlist. К сожалению, MPlayer не поддерживает никакие клавиатурные комбинации, но вскоре к этому привыкаешь... а, вернее, отвыкаешь от старого способа управления. На самом деле, когда каждой клавише назначена своя функция, больше как-то ничего не требуется: ни графических менюшек, ничего.
Мышка, само собой, поддерживается. Мало того: можно задействовать даже игровые джойстики и пульты дистанционного управления – MPlayer запросто «прикручивается» к любому стандартному устройству ввода.
Напоследок остаётся только проассоциировать видеофайлы с плеером (в три клика делается стандартными средствами XP) и пользоваться в своё удовольствие.

Наводим глянец
Плеер установлен, настроен, работает чертовски шустро... Но всё-таки не всем нравится аскетичность и минимализм. Хочется видеть хотя бы какие-то визуальные элементы управления – полосу перемотки хотя бы. Да и маячащее на заднем плане консольное окно поначалу отвлекает.
Бороться с этим довольно просто. Скачиваем любой графический фронтенд, копируем файлы в каталог MPlayer... Выбор графических надстроек довольно велик: от самых простеньких до навороченных, с поддержкой скинов, плейлистов и прочих мелких прибамбасов. Есть даже плагин для WinAMP, с помощью которого он будет показывать видео через MPlayer (работает гораздо быстрее стандартной винамповской «смотрелки»). Есть и lister-плагин для TC, но он мне жутко не понравился – очень сырой, слишком много ошибок.
В общем, выбрать есть из чего, однако действительно удобных фронтендов мне попалось всего два. Первый, с названием MPUI, мне понравился сразу. Во-первых, это единственный фронтенд, нормально поддерживающий русский язык, во-вторых, он не перекрывает опции уже настроенного MPlayer, в-третьих, легко настраивается, в-четвёртых, не меняет общую концепцию MPlayer... Есть и «в-пятых» и «в-десятых» – скачайте и убедитесь. Кстати, скачать можно как бинарник, так и исходный код на Delphi 6. Если есть чем компилировать, то советую качать именно исходники: сэкономите трафик и к тому же сможете узнать, как использовать MPlayer в собственных разработках.
Вторая оболочка, ласково и незамысловато названная RulesPlayer, очень похожа на первую. Немудрено – в readme можно найти упоминание автора о том, что MPUI не понравился ему своей негибкостью и «тормознутостью», потому он и создал нечто похожее, только лучше. RulesPlayer действительно контролирует больше возможностей MPlayer, но, к сожалению, не дружит с русским языком.
Итого: если без русского никак – качайте MPUI, если нет разницы – RulesPlayer.

Это ещё не всё
В природе существует такой конвертер – mencoder. Эта утилита, при умении с ней обращаться, делает ненужными все другие медиаконвертеры. Любой видеоформат на входе – любой видеоформат на выходе: .avi в .mov, .mkv в .mpg, .wmv в кучу .png… Хотя это и зависит от того, какие кодеки вкомпилированы в вашу сборку, обычно беспокоиться не о чем – уж самые популярные форматы конвертироваться точно будут.
Управляется mencoder так же – ключами командной строки. Причём тут всё куда сложнее, чем с плеером, поскольку комбинаций ключей гораздо больше. Графические фронтенды в этом случае уже не станут спасением – мне, по крайней мере, не удалось найти ни одну оболочку для Win32, которая бы в полной мере раскрыла все возможности mencoder. Более-менее мощной программой оказался MeWiG (Mencoder Windows GUI), но и её недоработанность сразу же бросается в глаза.
Прочтите документацию по использованию mencoder, и тогда составление командной строки вроде

mencoder -ovc xvid -xvidencopts bitrate=700 -oac mp3lame -lameopts cbr:br=128 -o myfile.avi myfile.mov

не будет для вас чем-то особенно сложным. Если много работаете с видео – такой скилл стоит прокачать.
Приведённый пример, кстати, конвертирует файл myfile.mov в .avi, сжатый .xvid с битрейтом 700 Кбит/с, с конвертированием звука в mp3 128 Кбит/с. Само собой, вместо mufile.mov может быть файл любого формата, понимаемого Mplayer.

www.MPlayerhq.hu – сайт MPlayer, на котором можно найти всё, что к ней относится, в том числе и неофициальный сборки.
www.MPlayerhq.hu/MPlayer/releases/win32-beta – исходные коды и бинарные пакеты MPlayer для Windows.
www.MPlayerhq.hu/design7/projects.html#windows – неофициальные сборки, фронтенды и утилиты для MPlayer и mencoder.
www.MPlayerhq.hu/DOCS/HTML-single/ru/MPlayer.html – вся русскоязычная документация по Mplayer на одной странице.
mpui.sf.net – страница фронтенда MPUI.
www.dsource.org/projects/rulesplayer – страница фронтенда RulesPlayer.
mewig.sf.net – страница фронтенда Mencoder Windows GUI.


Рекомендуем почитать: