LXF129:MPD

Материал из Linuxformat.

Перейти к: навигация, поиск

Содержание

Демон музыки

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

Одна из программ, непременно присутствующих на любом компьютере – это музыкальный проигрыватель. В мире Linux их невообразимое количество: консольный MOC и «навороченные» Amarok и Exaile, «WinAmp-подобные» Audacious с Qmmp и «iTunes-подобный» Songbird, универсальный Kaffeine, братья-близнецы Banshee и Rhythmbox... Различия между ними большей частью внешние, в то время как функционально все эти программы очень похожи друг на друга. Мы же поговорим всего об одном – Music Player Daemon (MPD) – но имеющем существенное отличие: клиент-серверную архитектуру. Проигрыватель запускается как демон, а управление им осуществляется с помощью клиентской программы. Соответственно, воспроизведение может продолжаться и при завершении программы-клиента, и при выходе пользователя из системы. Кроме того, плейером можно управлять удалённо: не имеет ни малейшего значения, на какой машине сети запущен клиент. Например, домашний ПК с мощной аудиосистемой может выступать в роли музыкального центра, управляемого с КПК. Ещё одна возможность MPD – потоковое вещание в сеть в одном из форматов: MP3, Ogg Vorbis или FLAC. Исходные аудиофайлы могут быть любыми – MPD сконвертирует их на лету.

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

Есть у MPD по сравнению с «обычными» проигрывателями и ряд ограничений. Во-первых, он сканирует содержимое только одной директории, и всю музыкальную коллекцию надо держать в ней (или, по крайней, мере создавать там ссылки на другие каталоги с музыкой). Во-вторых, в MPD отсутствует возможность редактирования тэгов. Хотя она и реализована в некоторых клиентах, для работы с этой функцией коллекция должна быть смонтирована локально. Ну и в-третьих, отсутствует возможность подстройки звука с помощью эквалайзера (что в принципе можно реализовать, например, через JACK).

Установка и настройка

MPD присутствует в репозиториях большинства дистрибутивов. Например, в Mandriva достаточно выполнить команду

urpmi mpd

В некоторых случаях, однако, MPD придётся компилировать самостоятельно. Это потребуется, если вам нужна поддержка AAC: из-за лицензионных ограничений его декодер FAAD2 в собранном виде не распространяется. Скомпилируем сначала его, а потом MPD.

Исходные тексты FAAD2 можно найти на сайте http://www.audiocoding.com. Устанавливается он тривиально:

./configure --with-mp4v2
make
su -c 'make install'

У самого MPD довольно много зависимостей. Добавьте их через менеджер пакетов:

urpmi lib64alsa2-devel lib64pulseaudio-devel lib64jack-devel
lib64shout-devel lib64mad-devel lib64ogg0-devel lib64vorbis-
devel lib64flac-devel lib64audiofile0-devel lib64mpcdec-devel
lib64mikmod-devel lib64ffmpeg-devel lib64wildmidi-devel
lib64id3_3.8_3-devel lib64modplug-devel lib64samplerate-devel
lib64curl-devel lib64mms-devel lib64sqlite3-devel

Но, конечно, лучше прочитать файл INSTALL и определиться с тем, что именно нужно лично вам.

После выполнения

./configure

выводится сводка, в которой можно убедиться, что необходимые опции включены. Далее всё, как обычно:

make
su -c ‘make install’

Сразу после установки MPD нужно выполнить его настройку. Взятый из репозиториев, демон, скорее всего, будет запускаться при старте системы. В большинстве случаев это наиболее удобный вариант. Отредактируйте файл /etc/mpd.conf (если вы намерены выполнять MPD от имени обычного пользователя – а такое тоже возможно – то вам нужен ~/.mpdconf).

Первым делом следует указать путь к музыкальной коллекции и директории, где будут храниться плей-листы (она должна существовать), изменив строки

music_directory “/mnt/music” 
playlist_directory “/mnt/music/playlists”

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

default_permissions “read”

Пароль и соответствующие ему права назначаются строкой

password “mypassword@read,add,control,admin”

где mypassword следует заменить на пароль. Таких строк может быть несколько, и набор прав после символа @ в них может быть разный.

Ещё одно изменение – скорее всего, последнее, которое вам придётся сделать – это добавить строку

id3v1_encoding “CP-1251”

Можно, конечно, обойтись и без неё, если в коллекции отсутствует музыка в формате MP3 или все тэги хранятся исключительно в ID3v2, но так или иначе она не повредит.

Клиенты для MPD

Помимо упомянутых ранее, у MPD есть еще одно скрытое достоинство. Всем, пожалуй, знакомо возникающее иногда желание сменить плейер: вроде и неплохо справляется он сосвоей задачей, но чем-то неудобен. Однако другую программу приходится настраивать с нуля, вновь создавать базу данных, возможно, менять настройки для вывода звука и т. д. С MPD всё куда проще: сменить оболочку-клиент можно не только не трогая настроек, но и не прерывая воспроизведения. При желании сравнить разные клиенты, можно даже запустить несколько одновременно.

А клиентов для MPD существует множество. Есть среди них и консольные, и графические. Одни одинаково хорошо работают и по сети, и на локальном компьютере, другие же включают ряд функций, требующих прямого доступа к файловой системе машины, на которой запущен сервер (например, для правки тэгов или анализа спектра). Все их рассмотреть невозможно, да и не имеет смысла. А вот наиболее распространённые мы упомянем: от самого простого консольного mpc до «навороченных» программ с графическим интерфейсом, не забыв и о нескольких Ncurses-клиентах, и о клиентах с web-интерфейсом.

Mpc

Являясь, пожалуй, самым простым (по реализации) клиентом для MPD, mpc (Media Player Client) предоставляет доступ ко всем его функциям. Mpc не помешает установить, даже если вы не планируете им пользоваться: места эта программа займёт немного, но может оказаться полезной, когда запустить графический клиент по той или иной причине невозможно.

Будучи вызванным из командной строки, mpc передаёт MPD одну-единственную команду. Чтобы настроить mpc, надо установить две переменные окружения: MPD_HOST и MPD_PORT. Как нетрудно догадаться, первая задаёт хост, на котором запущен MPD, а вторая – порт, который он слушает; по умолчанию используется 6600, и править его скорее всего не придётся. Переменную MPD_HOST надо будет изменить в том случае, если для управления плейером требуется пароль, или же он запущен на удалённой машине.

Например, если MPD установлен и настроен, как описано выше, команда

MPD_HOST=mypassword@localhost mpc update

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

mpc stats

которая выведет нечто вроде этого:

Artists: 150
Albums: 209
Songs: 2875
Play Time: 0 days, 0:00:00
Uptime: 0 days, 17:05:12
DB Updated: Sun Jan 3 20:33:42 2010
DB Play Time: 7 days, 18:29:15

Содержимое базы данных можно просмотреть с помощью команды

mpc ls

Далее композиции из базы данных можно помещать в плей-лист и запускать воспроизведение; все необходимые команды подробно документированы.

Само собой, такой метод работы – не самый удобный, но в некоторых случаях mpc оказывается очень к месту. Например, можно, воспользовавшись стандартными средствами окружения рабочего стола, назначить мультимедийным или «горячим» клавишам те или иные команды mpc. В таком случае простейшие операции (остановить, промотать) можно будет выполнять прямо с клавиатуры. Аналогичным образом можно, скажем, сделать кнопки управления на панели.

Любителям Ncurses

Ncmpcpp предоставляет довольно удобный интерфейс для навигации по базе данных MPD.

Приверженцам консоли вовсе не обязательно управлять MPD с помощью mpc, они вполне могут использовать один из нескольких интерактивных клиентов с Ncurses-интерфейсом. Самый известный из них – ncmpc (Ncurses Media Player Client). Управление осуществляется главным образом с помощью «горячих» клавиш. Можно, впрочем, пользоваться и мышью, но особого удобства это не добавляет.

По умолчанию данная возможность обычно отключена. Клавиши управления можно переназначить. Интерфейс ncmpc разделён на несколько экранов: помощи (активируется нажатием 1 или F1), плей-листа (2 или F2), навигации по базе данных (3 или F3), исполнителей (4 или F4), поиска (5 или F5), настройки аудиовыходов (8 или F8) и клавиатурных комбинаций (Shift+K).

Основное неудобство ncmpc' заключается, пожалуй, в не слишком удачной реализации работы с плей-листами и базой данных. Куда более удобный вариант предлагается программой ncmpcpp. Здесь можно сортировать композиции по исполнителям и альбомам; кроме того, имеется поиск по содержимому отдельных полей тэгов. Существенно приятнее работать мышью, хотя полностью клавиатуры она не заменяет. В остальном же управление мало отличается от ncmpc: разработчики вполне сознательно копировали интерфейс последнего, лишь добавляя недостающий функционал.

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

mpd_music_dir = “/mnt/music”

где /mnt/music надо заменить на путь к каталогу с музыкой, который был указан при настройке MPD.

Не стоит, однако, думать, что ncmpcpp состоит из одних только достоинств. По сравнению с ncmpc в нём всё же отсутствуют некоторые функции. В частности, нет интерфейса для изменения клавиатурных комбинаций (хотя их можно переназначить, отредактировав файл ~/.ncmpcpp/keys) и для управления устройствами вывода. Некоторых может огорчить и отсутствие русификации.

Следует также упомянуть клиент под названием Practical Music Search. Он принципиально отличается от предыдущих двух тем, что предоставляет при работе всего три экрана: с текущим плей-листом, с базой данных и со справкой по управлению. Остальные упразднены за ненужностью, поскольку большая часть функций назначена на «горячие» клавиши. В этом он похож на Vim, и вполне может прийтись по вкусу приверженцам последнего.

Ура, графика!

Gmpc имеет приятный интерфейс и неплохую функциональность. При этом в нём нет ничего лишнего, что также ценно.

Главное окно QMPDClient: эта программа более «тяжеловесна», чем другие упомянутые клиенты, но зато весьма удобна.

Клиентов MPD с графическим интерфейсом существует совершенно невообразимое количество, вполне сопоставимое с общим числом других аудиоплейеров. Здесь есть как вполне самостоятельные приложения, в том числе кроссплатформенные, так и апплеты для практически всех окружений рабочего стола, предоставляющих необходимый API. Поэтому я даже не буду пытаться объять необъятное, а ограничусь кратким обзором тех программ, что есть в репозиториях Mandriva, разбавив их базирующуюся на GTK компанию одним Qt-клиентом.

Клиент Xfmpc (Xfce Media Player Client), как нетрудно догадаться по названию, предназначен для среды Xfce. Это определяет его интерфейс и функционал: всё сведено к минимуму. Скромных размеров окошко позволяет редактировать список воспроизведения и управлять проигрыванием музыки. При этом, однако, нельзя сказать, чтобы чего-то сильно не хватало; все необходимые органы управления наличествуют. Но никаких дополнительных функций вроде редактора тэгов или загрузки обложек альбомов нет. Имеется и интегрирующийся с этой программой апплет для панели Xfce; все приложения, о которых пойдёт речь ниже, в таком средстве не нуждаются, так как добавляют свой значок в системный лоток.

Несколько более «продвинут» клиент Sonata. Он также занимает на экране не много места (хотя и чуть больше, чем Xfmpc), но кроме того же базового функционала предоставляет возможность загружать из Интернета обложки альбомов и тексты песен. Имеется в нём и редактор тэгов. Но главное его достоинство заключается всё же в гибкости настроек: можно сохранять несколько профилей для соединения с разными серверами, а интерфейс изменяется в довольно широких пределах. Есть возможность убрать некоторые неиспользуемые органы управления, а также указать, какая информация должна отображаться в окне.

Наш следующий клиент – gmpc (Gnome Media Player Client). Он выдержан в стиле Gnome и выглядит несколько более презентабельно, чем предыдущие две программы. Вот только чтобы оценить это, придётся развернуть его на весь экран (любители маленьких окон, впрочем, могут просто отключить боковую панель, что сделает его более компактным). Функций, изначально не предусмотренных MPD, в нём нет: он «не умеет» ни загружать сопутствующую информацию из Интернета, ни править тэги. Зато предоставляет множество настроек, куда более полно, чем Sonata, покрывая параметры MPD (собственно, найти какие-либо функции, которые предоставлялись бы MPD, но не были реализованы в gmpc, нам не удалось). Ну и, конечно, нельзя не упомянуть весьма удобный механизм навигации по медиатеке с помощью много ступенчатой фильтрации по практически всем полям тэгов.

И, наконец, обещанный Qt-клиент – QMPDClient. Из всех перечисленных он является наиболее функциональным, и наиболее «серьёзным» даже внешне: иначе как развернув его окно на весь экран, работать с ним весьма неудобно. Среди функций, отсутствующих у его конкурентов, заслуживают внимание возможность восстановления информации о композиции без тэгов по имени файла и функция «динамического списка воспроизведения», автоматически удаляющая отзвучавшие композиции и заполняющая список при его опустошении. Из прочего не хватает редактора тэгов и загрузки обложек альбомов (хотя хранящиеся локально обложки могут отображаться; кроме того, есть и загрузка текстов песен). Поиск по базе реализован так же, как в gmpc, но, к сожалению, фильтрация предусмотрена только по имени исполнителя и альбому.

Мобилизация

Ongaku, MPD-клиент для КПК, позволяет полноценно работать со списками воспроизведения

MPoD будет оптимальным MPD-клиентом для обладателей iPhone и iPodTouch. По функциональности он не уступает многим клиентам для настольных ПК

Подходить к компьютеру каждый раз, когда нужно переключить трек или отрегулировать громкость, не особо удобно. В том-то и прелесть MPD, что он позволяет управлять воспроизведением практически откуда угодно с помощью КПК или коммуникатора. «Мобильных» клиентов, правда, не так много, и найти их можно только для платформ Windows Mobile и iPhone/iPod Touch. Обладателям устройств на других платформах можно перейти сразу к следующему разделу – там они, скорее всего, обнаружат что-нибудь подходящее.

Среди клиентов для Windows Mobile следует отметить MPD4PPC (http://mpd4ppc.mijnflat.net). Если требуется только управлять воспроизведением и ничего более – эта небольшая программка как раз то, что нужно. Стандартные пять кнопок и регулятор громкости – вот почти всё, что она предлагает. Есть, правда, ещё возможность просмотра списка воспроизведения и базы данных, но при этом нет никаких средств для их изменения (кроме перемешивания треков).


Более «продвинутый» клиент – Ongaku (http://ongaku.on.funpic.de). Он позволяет выполнять поиск по базе и редактировать плей-листы. Кроме того, он способен отображать обложки альбомов, при условии, что они находятся в тех же директориях, что и аудиофайлы, и доступ к ним можно получить по протоколам HTTP или SMB.

Для iPhone и iPod Touch имеется программа impdclient (http://code.google.com/p/impdclient), по функциональности близкая к Ongaku: в ней есть средства управления воспроизведением и возможность редактировать текущий плей-лист; не хватает только отображения обложек альбомов. Однако лучше обратить внимание на другой клиент – MpoD (http://www.katoemba.net/makesnosenseatall/mpod), предоставляющий более широкие возможности. Помимо того, что он показывает обложки альбомов, в нём более удачно организована навигация по базе данных: можно сортировать записи по исполнителю, названию альбома или композиции. К тому же это единственный из «мобильных» клиентов, в котором можно создать несколько профилей для подключения к разным серверам.

Через Web

D.J. Pirate не требует для своей работы отдельного web-сервера

Количество разных мобильных платформ растёт не по дням, а по часам, так что нет ничего удивительного, что многие пользователи не обнаруживают MPD-клиента для своего устройства. Однако в каждом КПК (а ныне и в большинстве сотовых телефонов) имеется браузер, и ничто не мешает воспользоваться им для подключения к MPD. С этой целью написано немало клиентов на PHP; для их работы требуется только настроенный web-сервер с PHP-модулем.

Для самых простых «мобильников» с маленьким экраном лучше всего подойдёт mpdmote. Он не содержит никаких графических элементов и кода DHTML, весь интерфейс – девять ссылок.Для управления воспроизведением большего и не надо, а главное – требования к устройству минимальные.

Для устройств со сравнительно большим сенсорным экраном можно использовать iPodMp. Хотя он, как видно из названия, и разрабатывался специально для iPod Touch и iPhone, но никаких ограничений, кроме размеров экрана и поддержки AJAX браузером, не налагает. С его помощью можно и редактировать текущий список воспроизведения, и настроить параметры проигрывания, и обновить базу данных MPD.

Ну и, наконец, скажем пару слов о клиентах, предназначенных для работы в браузере настольного ПК с большим монитором. Их также достаточно, причём есть несколько написанных на Python и не требующих установки и настройки web-сервера: они сами берут на себя его функции. К таким относится, например, WebAMP, но, к сожалению, его разработка заброшена, а с последними версиями Python он работает не вполне корректно. А вот D.J. Pirate, пусть и выглядит несколько менее презентабельно, вполне работоспособен. Может оказаться полезным держать его «на всякий пожарный»: вдруг понадобится получить доступ к плейеру с компьютера, где установить клиент по той или иной причине невозможно или неудобно. По умолчанию его интерфейс доступен через порт 8080.

Что ещё?

В рамках одной статьи, конечно, нельзя рассмотреть все возможности, предоставляемые MPD. Но из наиболее распространённых его применений мы не упомянули лишь потоковое вещание в сети. Лёгкость управления позволяет интегрировать MPD в любые web-разработки; как пример можно привести системы управления медиаконтентом Ampache и Jinzora. С помощью простых скриптов можно настроить плейер на любые действия – например, воспроизводить определённую композицию в заданное время вместо будильника. Ну и, конечно, не стоит забывать о преимуществах клиент-серверной архитектуры: с помощью MPD можно легко превратить старый компьютер в медиа-сервер.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию