четверг, мая 03, 2007

Music Player Daemon (mpd)

Намедни открыл для себя mpd (Music Player Daemon). Не то чтобы вообще впервые услышал, просто впервые решил пощупать. Ранее меня отталкивали крики красноглазиков о том что mpd - тру, всё остальное маздай. Не нравятся мне такие люди и подсознательно их слова вызывают недоверие. Но когда в очередной раз играл в HoMM3 и при переходе на следующий трек амарок так нагрузил ситему, что лихо бежавший герой на несколько секунд встал колом, я наконец решил посмотреть на этого демона. Амарок по прежнему считаю лучшим из музыкальных плейеров / менеджеров коллекций под никсы, всё-таки юзал почти 2 года, но иногда бесит его прожорливость.
Вообще, клиент-серверная архитектура мне кажется более удобной, не зря всё больше людей юзает такие решения. Авторы уже давно мёртвого winampподобного культового плейера XMMS разрабатывают следующую версию своего продукта XMMS2 именно с такой архитектурой. Удобство состоит в том, что демон потребляет очень мало ресурсов машины и не зависит от иксов. За 5 дней использования его мне пару раз понадобилось ребутнуть иксы, музыка при этом продолжала играть, если надо что-то изменить - запускаю гуйного клиента, меняю плейлист или добавляю треки, закрываю клиента (а можно и оставить) и забываю о нём, в памяти висит только демон и отъедает 0-3% процессорного времени. С Амароком такой номер не пройдёт. Если грубо послать иксы на три клавиши - при следующем запуске в плейлисте амарока будет предыдущий список треков, а не тот что был перед убийством иксов. То есть требуется корректное закрытие амарока, при котором он и сохраняет текущий плейлист, что требует некоторого времени на тычки мышью или в клавиатуру. В памяти занимает несколько десятков метров и в разы больше чем mpd напрягает процессор, а что делает при переключении треков - писал выше.

Установка mpd и audioscrobbler демона

Установка демона в Кубунту (сейчас у меня пока даппер) безобразно простая.
$ sudo aptitude install mpd

После установки в /etc/init.d появился его стартовый скрипт и симлинки на него в каталогах уровней. Конфиг лёг в /etc/mpd.conf - его можно и не править, единственная строчка, которая нуждается в изменении
music_directory         "/var/lib/mpd/music"

но и её можно не изменять, просто кинув симлинк(и) на каталог(и) с музыкой в /var/lib/mpd/music, особенно если у вас музыка разбросана по разным местам.
Эти настройки глобальные, т.е. для работы mpd как system service, для однопользовательской машины как у меня - наиболее подходящие. Если же желаете запускать демона вручную, то нужно сделать
sudo dpkg-reconfigure mpd

и переконфигурировать этот пакет. Не делал, но, как понял из man mpd, нужно создать файл конфигурации в домашнем каталоге ~/.mpdconf и запускать
mpd [options] [CONF_FILE]

Пример конфига с камментами mpd.conf.gz лежит, как и должно быть, в /usr/share/doc/mpd/examples.
После настройки нужно создать базу данных музыкальной коллекции
mpd --create-db

После добавления музыкальных файлов в коллекцию или изменения тэгов необходимо обновлять базу данных, при использовании графического клиента (о чём ниже), по крайней мере того что у меня, это упрощается.
Если нужно отправлять статистику о слушаемой музыке на last.fm aka audioscrobbler, то нужен ещё один демон. Поиск "на скорую руку" вывел на mpdscribble, mpdscrobbler и smpc. Поставил первый же, посмотрел, он меня вполне устроил.
$ sudo aptitude install mpdscribble

В конфиге /etc/mpdscribble.conf указал имя пользователя last.fm, md5 хэш пароля и увеличил период между опросами статуса mpd. Установил уровни запуска те же что и у mpd. Как и в случае с mpd - это глобальный конфиг для однопользовательской системы. Для запуска вручную, от юзера, конфиг положить в домашний каталог ~/.mpdscribble/.mpdscribble.conf - всё это можно прочитать в man mpdscribble.
По окончании установки и конфигурации запустил демоны:
$ sudo /etc/init.d/mpd restart
$ sudo /etc/init.d/mpdscribble start

Клиент

Управляется mpd с помощью программы-клиента. Клиентов уже существует много, можно выбрать на свой вкус здесь или здесь. Ну или поиском по репозиторию. Есть консольные, на gtk2, на qt, на java, web-клиенты и т.д. Как пользователю KDE мне в первую очередь интересны клиенты на qt, поэтому обратил внимание на kmp, Quimup и QMPDClient. Все три клиента есть уже в виде deb пакетов, но первые два отказались устанавливаться на даппер (шибко старый дистрибутив, хотя ему всего год) - не те версии библиотек, в бэкпортах не нашёл, да и не напрягался этим, так как третий клиент кажется фичастее первых двух.
Итак, поставил QMPDClient . Правда, не самой последней версии 1.0.7, а версии 1.0.6.2. Причина всё та же - не те версии библиотек, т.е. требует qt4 v.4.2.0, а в даппере v.4.1.0. В Feisty Fawn она встанет, там версия qt4 посвежее. Вообще, дывэлопер этого клиента предусмотрителен - сразу пишет на qt4, так как KDE4 не за горами.
В принципе, удобный клиент. Локализация немного повеселила. Не понравилась пара мелочей: отвратное сглаживание шрифтов (но, судя по скриншоту версии 1.0.7 это исправлено за счёт новых библиотек qt4) и отсутствие такой удобной фичи как "очереди", к которой так привык в амарок. Без остальных амароковых наворотов типа открытия вики-страницы по исполнителю, быстрого поиска lyrics и статистики по трекам и исполнителям, с трудом, но обойдусь. Хотя, по последним известиям от разработчика, датированным 22.03.2007, что-то интересное должно появиться в следующей версии:
I am currently working on implementing new socket code, local caching of the database and optional incremental reading. This should make the next release quite an improvement for people with large collections.
Вот у меня появляется ещё одна причина для обновления до Feisty. Но подожду ещё немного.

Update 26.05.2007:
Бесполезная, но кому-нибудь нужная фишка. Nowplaying скрипт для Konversation. Обходился долгое время без него, но на всякий случай - вот здесь есть, требуется доустановить консольный клиент mpc.

Комментариев нет: