Рецепты. Кое-что о программе mplayer

Доброжелатель

2008-02-06

1. Частота дискретизации

Как известно, не все звуковые чипы могут должным образом воспроизводить мультимедийное содержимое с частотой дискретизации в 48000 Гц. В то же время, можно встретить немало видео- и звуковых записей, содержимое которых закодировано в расчёте на воспроизведение именно с такой частотой дискретизации. При воспроизведении звука устройствами, которые не могут обеспечить этого требования, будут слышны искажения в виде высокочастотного шума и свиста.

Предположим, что наша звуковая карта не может полноценно воспроизводить записи с частотой дискретизации 48000 Гц. Решить это достаточно просто: нужно запустить mplayer с опцией -af.

$ mplayer -af resample=44100:0:0
        

Чтобы не делать это всякий раз руками, можно добавить соответствующую настройку в файл конфигурации (~/.mplayer/config):

# Resampling all audio to 44100 Hz
af=resample=44100:0:0
        

Теперь все без исключения звуковые мультмедийные форматы (в том числе и звуковые дорожки фильмов) будут воспроизводиться с частотой 44100 Гц (это стандарт для Audio CD).

Хотя в документации к программе указано, что частота дискретизации выбирается при воспроизведении автоматически, однако может быть так, что выбор будет неверным — это зависит, насколько я понимаю, больше от оборудования, чем от воспроизводимого материала. В этом случае будет полезно определить раз и навсегда её верхний порог в 44100 Гц путём внесения описанных изменений в файл настроек программы.

2. RTC (Real Time Clock)

Пересказывать содержимое справочной страницы man rtc не буду.

Заставить mplayer использовать в работе устройство /dev/rtc — это так называемые часы истинного времени — можно путём указания в файле настроек следующего:

# Enable RTC (Real Time Clock) access
rtc=1
        

Это полезно прежде всего для качественного воспроизведения звука.

Нужно учитывать, что пользователь должен иметь права доступа к устройству /dev/rtc. В операционной системе Debian GNU/Linux для этого следует добавить пользователя в группу audio, члены которой имеют доступ к этому устройству на чтение и запись.

Убедимся в сказанном о владельце устройства:

$ ls -l /dev/rtc 
crw-rw---- 1 root audio 10, 135 2008-01-17 01:20 /dev/rtc
        

Добавим пользователя в группу audio:

$ sudo adduser <имя_пользователя> audio
        

Последнее (или похожие действия — в зависимости от конкретной системы), впрочем, следует сделать обязательно в том случае, если нам нужен звук как таковой, потому что, скажем, для серверной машины возможность воспроизведения звука явно излишня и не во всех системах она задействована по умолчанию.

Чтобы всё это работало, нужно заранее обеспечить не только доступ обычных пользователей [членов группы audio] к упомянутому устройству, но и выставить максимальную частоту RTC:

# echo 1024 > /proc/sys/dev/rtc/max-user-freq
        

Чтобы эта настройка была постоянной, нужно дописать следующую строку в файл /etc/sysctl.conf:

# echo 'dev.rtc.max-user-freq = 1024' >> /etc/sysctl.conf
        

Подробнее о настройке RTC смотрите в HTML-документации к программе (глава 2, раздел 5).

3. mplayer в качестве мультимедийного проигрывателя общего назначения

Принято считать, что этот проигрывать в основном пригоден для воспроизведения видеозаписей. Ничто, однако, не мешает воспроизводить при его помощи любое мультимедийное содержимое.

В этом качестве mplayer хорош благодаря высокому качеству воспроизведения и низким требованиям к системным ресурсам.

Что до форматов, то затрудняюсь сказать, какие из них mplayer не сможет воспроизвести. Для примера, проигрывание файлов в форматах WAV, FLAC, OGG, MP3 не вызывает никаких затруднений.

Если пользователь указал в настроечном файле проигрывателя опции, описанные в пп. 1 и 2, то воспроизведение звуковых записей, скорее всего, не вызовет никаких вопросов, и не будет необходимости определять какие-либо дополнительные опции его работы.

3.1. Списки воспроизведения

Может возникнуть вполне закономерный вопрос: как быть со списками воспроизведения?

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

mplayer умеет воспроизводить заранее созданные плейлисты. Для этого нужно запускать его с опцией -playlist:

$ mplayer -playlist <файл плейлиста>
        

Путь к файлу плейлиста может быть как абсолютным, так и относительным.

Можно также использовать стандартные средства системы (например, обычное перенаправление вывода команд) для динамического создания списка воспроизведения без создания отдельного файла плейлиста:

$ mplayer -playlist `find <путь_поиска_файлов> -type f -name "*.mp3" -print`
        

Это, конечно же, не единственный способ. Можно сделать, например, так:

$ find <путь_поиска_файлов> -type f -name "*.mp3" -print | sort > ~/playlist && mplayer -playlist ~/playlist
        

В этом случае команда find выполнит свою задачу и завершится, а mplayer будет считывать список воспроизведения из обычного файла.

Кроме того, можно создать алиас или, ещё лучше, небольшой скрипт, который будет выполнять указанные действия, принимая в качестве аргумента путь к каталогу, содержимое которого мы собираемся прослушать.

О формате такого файла-плейлиста сказать особенно нечего. Так, в вышеописанных случаях этот файл будет содержать самый обычный перечень отсортированных абсолютных путей к файлам в иерархии файловой системы. Без малейших затруднений проигрыватель будет воспроизводить и плейлисты в формате *.m3u или *.pls, созданные другими программами — например, проигрывателем xmms.

Чем хорош такой способ работы с фонотекой?

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

В повседневной практике, на мой взгляд, редко на самом деле возникает потребность видеть перечень проигрываемых файлов как таковой, да и воспроизводящей программе незачем маячить перед глазами. По определению звуковой проигрыватель является программой, которая работает преимущественно «в фоновом режиме». Хотя поиск файлов средствами оконного окружения — KDE, GNOME, XFCE — для многих пользователей покажется удобным, но я, ввиду своей нелюбви к перечисленным KDE, GNOME и XFCE и за неимением их, предпочитаю классическую командную строку. В пользу этого также и то, что пользователь обычно знает, что есть у него в фонотеке, и потому при динамическом создании списка воспроизведения может всегда указать, где именно и что именно искать. Не забудем и о возможности отбора файлов по некоторым критериям при помощи команды grep. Таким образом, те несколько секунд, которые тратятся на составление команды создания плейлиста (при наличии автодополнения, разумеется) едва ли будут отвлекать нас от основного занятия.

3.2. Потребление системных ресурсов

Бережливое использование системных ресурсов — одна из отличительных черт mplayer’а. Для запуска проигрывателя понадобится выделить отдельное окно эмулятора терминала (xterm, rxvt etc) или отдельный виртуальный терминал, если вы работаете вне графической системы. Это нужно сделать по той причине, что mplayer, по моим наблюдениям, в качестве фонового процесса адекватно работать не может (во всяком случае, я пока не выяснил, как заставить его это сделать). В этом окне или терминале будет работать командный интерпретатор (bash, tcsh etc) и собственно mplayer. Согласно выводу программы htop в моей системе этот набор — rxvt, bash и mplayer — совместно занимает в ОЗУ немногим больше 8 Мб; потребление же процессорного времени стремится к нулю (в прямом смысле слов) и не идёт ни в какое сравнение, например, с проигрывателями audacious или xmms, не говоря о более ресурсоёмких программах.

4. О чём я здесь не упоминаю

Обратившись к документации, которая поставляется вместе с программой в нескольких форматах (среди которых и HTML), вы получите несравнимо больше сведений о том, как работать с этим проигрывателем. Документация обширна и качественна, к тому же переведена на многие языки — в том числе и на русский.

5. Ссылки

  1. Домашняя страница разработчика проигрывателя mplayer: www.mplayerhq.hu.