Медиаплееры, пожалуй, входят в число самых распространенных видов ПО для любой ОС. Их сотни, они платные и бесплатные, «навороченные» и простенькие.

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

Как правило, пользователь, активно работающий с мультимедийной информацией, быстро обзаводится арсеналом всевозможных «граберов», конвертеров и проигрывателей. Неважно, что функционал большинства из них дублируется на 80%, зато одна-единственная функция делает каждую из программ незаменимой. Естественно, что для администрирования музыкальной библиотеки или того самого автоматического проигрывания вставленного DVD уместно применять соответствующие программы. А вот количество вспомогательных инструментов неплохо бы уменьшить без потери функций, не запускать же для проигрывания одного файла со сменного носителя громоздкий «комбайн» вроде Windows Media Player или Power DVD. Для данных целей куда больше подойдет небольшая, быстрая программа, интегрированная в файловый менеджер. А если она умеет еще и выполнять различные низкоуровневые операции наподобие ввода или перекодирования, то ее можно назвать просто находкой.

Аналогичных инструментов существует немало, но здесь мы рассмотрим лишь один из них — кросс-платформенный MPlayer для работы с мультимедиа. Почему мы остановились именно на нем? Причина проста: по набору возможностей, функционалу и ассортименту поддерживаемых платформ MPlayer является практически идеальным выбором. Если добавить к этому открытый исходный текст и бесплатность, то предпочтение становится очевидным. К тому же описание работы с программой наглядно демонстрирует возможности командного интерфейса в стиле UNIX, столь не похожего на привычный «мышеклик».

Что умеет MPlayer?

Программа предназначена для воспроизведения либо ввода мультимедийных данных с разных источников: файлов, VideoCD, SVCD, DVD, плат DVB (спутниковое ТВ), FM- или ТВ-тюнеров, потокового вещания по протоколам HTTP, FTP, MMS или RTSP/RTP. Порой при записи происходит одновременное перекодирование из одного формата в другой, сжатие данных на лету широким ассортиментом кодеков, включая MPEG всех видов, H.264 и даже видеоформат Sony PlayStation Portable. Поддерживаются как программные субтитры, так и аппаратные средства DVB- и MPEG-плат. Для вывода субтитров подходят и векторные (true type), и растровые шрифты. Видеоданные выводятся на монитор и TV-OUT, а также на выходы аппаратных MPEG-декодеров, подобных Creative DXR3 или Sigma Designs Hollywood Plus. Вывод многоканального аудиоряда обеспечивается как декодированием потоков AC3 и DTS, так и передачей без оного через выход S/PDIF, что весьма полезно тогда, когда акустическая аппаратура способна самостоятельно декодировать, скажем, DTS. Помимо того MPlayer способен раскладывать стерео на указанное число каналов и моделировать пространственное звуковое окружение на двухканальных наушниках посредством алгоритма HRTF.

Управление программой осуществляется посредством GUI, командной строки, «горячих» клавиш, джойстиков, пультов ДУ и прочих беспроводных устройств. Этот медиаплеер работает в среде Windows, Mac OS X, Linux и во множестве других UNIX-подобных систем. Плеер и кодировщик — утилиты командной строки, однако для каждой ОС существует несколько вариантов графического интерфейса (Frontend). Любой параметр настройки может быть задан в конфигурационном файле или передан из командной строки, а каждая функция управления доступна и средствами GUI, и с клавиатуры (пульта). Таким образом, MPlayer способен работать в полностью интерактивном режиме и, кроме того, управляться из скрипта, что делает его незаменимым при регулярном выполнении рутинных действий или при пакетной обработке большого числа файлов.

Нужен ли MPlayer именно вам?

Подобно любому мощному инструменту, MPlayer требует от пользователя определенной квалификации. Гибкость и функциональность программы раскрываются при выполнении достаточно сложных задач. И вряд ли они окажутся востребованными, если главная цель — просмотр фильма на 15-дюймовом мониторе с парой колонок мощностью по 3 Вт. Зато если вы регулярно осуществляете множество нетривиальных манипуляций с мультимедиа, хотите получить максимальную отдачу от качественной аппаратуры или гибко адаптировать ПО под свои потребности, то MPlayer, пожалуй, будет оптимальным вариантом. Тонкая настройка под оборудование — одна из сильных сторон продукта. Наряду с огромным количеством опций и режимов работы MPlayer имеет еще одно серьезное достоинство. Как уже упоминалось, программа поставляется с открытым исходным текстом. Значит, помимо применения имеющихся готовых бинарных файлов для вашей ОС всегда есть возможность переписать архив с этим самым текстом и скомпилировать исполняемые файлы с максимальной оптимизацией под архитектуру определенного ПК. В случае работы с Linux все необходимые для решения данной задачи инструменты присутствуют в системе, а для Windows легко загрузить инструментарий разработки MinGW и собрать MPlayer в «родном» для него UNIX-окружении.

Установка и первичная настройка программы

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

Так как MPlayer в первую очередь консольная утилита, для Windows отлично подойдет Far, а, скажем, для Linux — сходный с Far Midnight Commander (MC). Для автоматического открытия при щелчке или нажатии стоит ассоциировать MPlayer с основными типами медиафайлов. В Linux программа устанавливается средствами менеджера пакетов и никаких проблем с настройками не возникает. А вот в Windows необходимо самостоятельно распаковать исполняемые файлы программы в каталог, приведенный в списке переменной окружения $PATH. Чтобы увидеть этот перечень, достаточно в командной строке набрать path.

Поскольку вызывать MPlayer мы будем из Far, то ради экономии времени лучше распаковать архив с проигрывателем прямо в каталог Prorgam FilesFar. Потом следует в диалоге настройки «Ассоциации файлов» в Far или в файле ~/.mc/bindings для MC перечислить нужные типы файлов и указать вызов команды MPlayer. Не стоит забывать, что в Far синтаксис передачи имени файла унаследован от Norton Commander и для запуска MPlayer с параметром file.ext надо внести команду mplayer.

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

Ввод аудио- и видеоданных

Рассмотрим несколько типовых задач: извлечение звуковой дорожки с концертной записи на DVD, сжатие фильма с DVD в формат MPEG-4, ввод нескольких эпизодов со сборника на DVD и сжатие каждого в отдельный файл.

Допустим, у вас есть запись некоего концерта и вам хотелось бы извлечь звуковую дорожку, чтобы потом прослушивать музыку в формате MP3 с помощью портативного плеера. В этом случае удобнее всего ввести звук в некомпрессированном (RAW PCM) формате, чтобы потом сжать нужные песни в MP3. Если концерт не разделен на эпизоды, то достаточно дать команду: MPlayer устройство_dvd -vo null -vc null -ao pcm:fast. Для Windows в качестве устройства должна выступать буква раздела, для Linux — путь к устройству, например D: или /dev/dvd соответственно. Остальные параметры командной строки указывают, что именно требуется делать с данными. Так, параметр -vo null означает, что не надо выводить видеоданные, -vc null — что не надо декодировать видеоинформацию, а -ao pcm:fast включает режим быстрого ввода аудиоданных и записи их на диск. Результатом выполнения приведенной выше команды станет файл audiodump.wav объемом около 1 Гбайт. Дальнейшая обработка файла может состоять в вырезании выбранных песен в аудиоредакторе и кодировании их в MP3.

Если же песни на DVD представлены как отдельные фрагменты, то легко сразу же скопировать нужную в отдельный файл — команда MPlayer dvd://номер_фрагмента -vo null -vc null -ao pcm:fast:file=song_ name.wav.

При вводе и перекодировании видеоданных будет значительно больше опций. Как минимум, нужно указать, какие кодеки следует выбрать для видеоряда и звука. Самая простая команда будет выглядеть как mencoder устройство_dvd -ovc lavc -oac copy -o video.avi, где -ovc lavc — указание видеокодера MPEG-4, -oac copy — указание копировать звуковую дорожку без кодирования, -o — выходной файл.

Чтобы ввести какой-либо конкретный эпизод или сразу несколько, достаточно заменить прямое указание накопителя DVD на номер фрагмента (или их диапазон) — dvd://номер_ фрагмента.

Работа с поврежденными данными

Нередко носитель или сами файлы оказываются некондиционными. Наиболее часто это происходит из-за физического дефекта диска, ошибок в структуре DVD или индексе и неверного чередования в AVI-файлах. Здесь помощь MPlayer может оказаться бесценной. К примеру, если воспроизведение зависает вместе с плеером на определенном месте из-за дефектного носителя, легко пропустить «гиблое место» при копировании видеоданных. Без труда вводить произвольные фрагменты позволяют следующие опции: -ss — переместиться на указанную позицию в секундах; -sb — то же, но в байтах и -endpos — остановить запись на указанной позиции.

Вылечить «битый» файл .avi поможет команда наподобие mencoder input.avi -idx -ovc copy -oac copy -o output.avi. Файл output.avi получит исправленное чередование и заново сгенерированный индекс.

Рассмотрим решение комплексной проблемы. Итак, имеется некий сборник «4 фильма на одном DVD». Файл video_ts.ifo дефектный, и при попытке открыть DVD-меню происходит ошибка. Нужный фильм разбросан по двум файлам .vob вперемешку с фрагментами других фильмов. Помимо всего прочего, диск плохо читается. Естественно, требуется получить нужный фильм в виде одного файла MPEG-4.

Для начала стоит перенести оба файла .vob на жесткий диск как обычные .mpg, сформированные заново и без ошибок:

mencoder устройство_dvd/video_ts/vts_01_3.vob -oac copy -ovc copy -of mpeg -o part1.mpg и mencoder устройство_dvd/ video_ts/vts_01_4.vob -oac copy -ovc copy -of mpeg -o part2.mpg. Здесь -oac copy и -ovc copy — указание на копирование содержимого без перекодирования, -of mpeg — указание создать файл MPEG вместо контейнера AVI.

Теперь с помощью опций -ss и -endpos вырезаем обе части фильма из файлов и сохраняем в нужный нам MPEG-4. Осталось лишь «склеить» полученные части: mencoder part1.avi part2.avi -ovc copy -oac copy -o whole_movie.avi.

Думается, если обратиться к предыдущим примерам, то легко понять логику последней команды, т.е. нужно взять две части фильма и, не внося изменений, превратить их в один файл whole_movie.avi.

Маленькое резюме

Разумеется, в этой статье не раскрыть и малой доли всех возможностей MPlayer, ее главная цель — демонстрация простого и эффективного механизма работы программы. Независимо от конкретной задачи легко составить последовательность действий, не теряя времени на выбор десятков пунктов графического меню. Наиболее частые действия просто записываются в шаблон скрипта, и тогда последующие обращения к ним займут считаные секунды. А про то, что производительность этой программы выше, чем у тяжеловесных графических «комбайнов», и говорить не приходится. К примеру, 1-Гбайт .avi по нажатию клавиши в Far или MC открывается практически мгновенно даже на ПК с 256-Мбайт ОЗУ. Точно такими же «реактивными» оказываются и привязанные к «горячим» клавишам функции вроде масштабирования, перемотки на 20 с, 1 мин, 10 мин (, , ) и т.п.

При работе же в среде Linux, где практически каждую операцию можно проделать как из GUI, так и в консоли, MPlayer органично вписывается в набор других инструментов. В результате один скрипт оказывается способен, например, ввести и перекодировать видеоданные, добавить ранее имевшиеся фрагменты, сформировать структуру DVD и записать ее на болванку.

Внушительный объем полезной информации на русском языке можно почерпнуть из документации в архиве с исходными текстами MPlayer.


Сжатие Wav в MP3 из командной строки

Нередко возникает вопрос: каким образом можно немедленно перекодировать полученный некомпрессированный .wav в MP3 или другой компактный формат? Проще всего — обработать файл консольным же кодировщиком. В случае с MP3 прекрасно подойдет Lame. Будем считать, что исполнимый файл Lame находится в каталоге из переменной $PATH. Тогда независимо от ОС команда будет следующей: lame -h -v -b 192 input.wav output.mp3.

В ней опция -h означает более качественный алгоритм сжатия, -v задает переменную скорость потока (битрейт), а ключ -b — минимальный. Можно поместить команды ввода и сжатия в скрипт: для Windows — .bat или cmd, для Linux — shell. В этом случае появится новая команда, скажем dvd2mp3. Приведенные ниже листинги (первый — для cmd, второй — для shell) позволяют ввести с DVD звук указанного фрагмента и сохранить его в MP3 под именем song_номер_фрагмента.

Листинг 1
mplayer dvd://%1 -vo null -vc null -ao pcm:fast:file=song%1.wav


lame -h -v -b 192 song%1.wav song%1.mp3

del song%1.wav
Листинг 2
#bin/sh


mplayer dvd://$1 -vo null -vc null -ao pcm:fast:file=song$1.wav

lame -h -v -b 192 song$1.wav song$1.mp3

rm song$1.wav

Таким образом, сохранив один из этих скриптов под именем dvd2mp3 с соответствующим расширением, получаем команду dvd2mp3. Например, команда dvd2mp3 5 захватит фрагмент №5 с DVD и сохранит как MP3-файл song5.mp3.


Параметры и профили

Чтобы уменьшить число опций в командной строке, стоит прописать значительную часть настроек в конфигурационных файлах. Возьмем, например, параметры кодера MPEG-4 и создадим два профиля — для обычного качества (быстрее) и для высокого (медленнее). Образовываем в каталоге программы файл mencoder.conf и вносим в него следующие строки:

[mpeg4]

profile-desc="MPEG4 encoding"

ovc=lavc=yes

lavcopts=vcodec=mpeg4:vbitrate=1200



[mpeg4-hq]

profile-desc="HQ MPEG4 encoding"

profile=mpeg4

lavcopts=mbd=2:trell=yes:v4mv=yes

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


Пропорции MPEG-4

Из дополнительных опций видеокодера очень часто могут пригодиться параметры масштабирования и соотношения сторон. Это обусловлено тем, что хотя заголовок MPEG-4 и способен хранить информацию о соотношении сторон, большинство плееров данный параметр игнорирует. Таким образом, полученный при вводе файл будет воспроизводиться с искажением пропорций, если физическое разрешение видеоряда не соответствует предполагаемому соотношению сторон, скажем 512Ё512, при соотношении 4:3. Есть два пути решения проблемы. Менее качественный и более затратный, но самый надежный — масштабирование видеоинформации при кодировании. В этом случае можно воспользоваться опцией -vf scale = ширина:высота и ключом -sws для выбора алгоритма масштабирования (по умолчанию бикубическое). Второй способ куда проще, но результат будет подходить лишь для некоторых плееров, включая MPlayer. Опция -force-avi-aspect позволяет записать данные о пропорциях в заголовок файла.


DVD изнутри

Информация на DVD-видео организована следующим образом: ролики хранятся в файлах с расширением .vob, имеющих объем около 1 Гбайт каждый. Данные же о расположении конкретных фрагментов и языках, а также прочая служебная информация находятся в файлах с расширением .ifo — в случае их повреждения корректный доступ к содержимому диска становится затруднительным. Однако .vob — это обычные видеофайлы, которые можно копировать, воспроизводить, перекодировать инструментами вроде MPlayer. Так что при возникновении проблем с прочтением служебной информации легко разобраться с содержимым видеофайлов и вручную извлечь нужные данные.


Глоссарий

AVI — формат контейнера для хранения видео- и аудиоинформации. Внутри него может находиться информация, сжатая различными кодеками, но чаще всего это либо MPEG-4 (DivX/DivX4), либо устаревшие indeo/cinepac.

AC3 — Dolby Digital. Наиболее распространенный формат записи пространственного звука на DVD.

DTS — Digital Theater System, система цифрового кинотеатра. Современный и качественный формат записи звука (в отличие от AC3). Отдельные виды акустической аппаратуры не способны декодировать этот формат. Если аппаратный DVD-плеер воспроизводит видеоряд без звука, в первую очередь стоит перекодировать DTS в другой формат.

HRTF — Head Related Transfer Function. Алгоритм моделирования пространственного звука на стереонаушниках за счет распределения эха и динамического изменения частот в зависимости от «расположения» источника звука.

OGM — формат открытого видеоконтейнера Vorbis.


Ссылки

http://www.mplayerhq.hu/design7/news.html — главная страница проекта;

http://www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html — документация на русском языке.