Огляд музичного демона mpd

Серед програм Лінукса є чимало дивних і, на перший погляд, незручних. Трохи незвично музичному плеєру мати клієнт-серверну архітектуру. Але програмою mpd (Music Player Daemon) користується чимало людей. mpd запускається при завантаженні ОС і доступний для клієнтських програм через мережу (найчастіше це localhost:6600). Клієнти віддають серверу команди на зразок «грати», «стоп», «додати композиції у плейлист». Якщо через клієнт задати команду програвати якусь композицію, а потім вийти з нього, то музика продовжиться. Дуже добре для економії ресурсів. Але, на мою думку, основна перевага mpd в тому, що кількість клієнтів — дуже велика і користувач може за смаком вибрати один або кілька з них. За технічні деталі відповідає одна прогама: mpd-сервер. Одна колекція музики, одні кодеки, одні налаштування виводу. А інтерфейс керування усім цим добром може бути яким завгодно. Тож користувачам Linux і Mac OS X ця стаття може виявитись корисною чи принаймні пізнавальною.

Встановлення і налаштування

Далі буду розказувати про роботу з mpd на прикладі Ubuntu 9.10. mpd встановлюється звичайно:
  sudo apt-get install mpd


Тепер треба сконфігурувати mpd. Не бачу резону мати окремий конфіг для кожного користувача, тому редагуємо загальносистемний конфіг /etc/mpd.conf. Конфіг mpd приємно порадував своєю простотою і доброю задокументованістю. Без перебільшення, він не буде складним навіть для початківців UNIX-way.

Спочатку налаштуємо директорії і файли програми:
  music_directory	"/home/user/Music"
  playlist_directory	"/home/user/.mpd/playlists"
  db_file		"/home/user/.mpd/database"
Можна задати тільки одне значення music_directory. Якщо потрібно більше, створюємо папку із посиланнями на потрібні директорії/файли і розкоментовуємо рядок:
  follow_outside_symlinks  "yes"
Після чого треба налаштувати адресу і порт, які сервер буде слухати:
  bind_to_address  localhost
  port  6600
Тепер черга за пристроями виводу. Король пристроїв виводу — ALSA. Але якщо у вас обладнання не підтримує автоматичне мікшування, то коректно виводити звук зможе тільки одна програма. Якщо вам це не підходить, то можна вибрати інший пристрій виводу або встановити і налаштувати плагін ALSA dmix.

Для більшості пристроїв виводу достатньо буде тільки параметрів type і довільно вибраної назви name.
  audio_output {
    type "alsa"
    name "My ALSA Device"
  }
І накінець, варто звернути увагу на кодування:
  filesystem_charset	"UTF-8"
  id3v1_encoding	"UTF-8"
Після конфігурування створюють базу даних:
  mpd --create-db
Як я казав, усе максимально доступно.

Клієнти

Клієнтів є дуже багато. Я опишу кілька, на мою думку, найчастіше вживаних, що підходять більшості користувачів.
  sudo apt-get install mpc ncmpc gmpc sonata mpdscribble
mpc

Дозволяє керувати сервером з консолі командами на зразок
  mpc play
  mpc stop
  mpc search artist abba | mpc add
Такі команди зручно використовувати для налаштування гарячих клавіш.

ncmpc

Гарно сконфігурований ncmpc у віртуальному терміналі urxvt
Консольний клієнт, що використовує Ncurses. Якщо не полінуватись написати для нього хороший конфіг, то за рівнем юзабіліті не гірший за свої графічні аналоги.

gmpc (Gnome Music Player Client)

Gnome Music Player Client
Звичний інтерфейс, багатий функціонал, повна реалізація функціоналу mpd. Must have.

Sonata

Sonata
Також написаний з GTK+, але має оригінальний мінімалістичний та елегантний інтерфейс. Я вважаю його дуже зручним.

mpdscribble

Скроблер з дуже малим споживанням ресурсів.

Написати клієнт для mpd дуже просто. Сам написав скриптик у кілька рядків для виводу мета-інформації через libnotify. Схоже на те, що mpd є улюбленою платформою для програмістів-початківців. Тому велика частина клієнтів не якісна. Ще частина — покинуті проекти. З іншої сторони розробники дуже вигадливі. Є клієнт для Firefox — Music Player Minion, Vim — Vimmpc, клієнти для Emacs, conky, Pidgin, веб-клієнти, інтерфейси для керування через колесико миші чи BlueTooth. Може простіше сказати чого ще нема?

Епілог

Я користуюсь mpd/mpc+xbindkeys/ncmpc/sonata/mpdscribble уже 4 місяці. Спокуси перейти на щось інше не виникає. Пропало й відчуття, що mpd — це щось незвичайне. Він просто працює як мені хочеться.

коментарі:

Enetri 26.03.2010 17:22
Хороша стаття, але перенесіть її краще трохи вище (наприклад, поближче до лінукса), щоб не згубилася вам в різному:

технології, *лінукс
404 26.03.2010 17:27
І загалом, мануали люблять теги — чим більше предметних, тим краще :)
+1chugylo 26.03.2010 18:24
Додав ще кілька.
tercius 26.03.2010 17:38
оце гуд! і великий плюс щире дякую )

люблю мануали )))
bignyak 26.03.2010 20:29
Дякую за статтю. Користуюсь mpd давно. Але зручно коли усе зібрано в одному місці і доступно описано
meako 27.03.2010 07:52
mpd це круто, в мене він крутить музику з серверу по мережі, керується веб-інтерфейсом.
Доречі, можливість з’єднання по мережі, і роботи в headless режимі — також надзвичайно сильні сторони цього плеєра.
Станiслав 14.04.2010 15:36
Стаття порадувала :) Але в мене одна проблема є, нiяк не хоче йти по символiчним посиланням :(
Станiслав 14.04.2010 17:04
Тепер зрозумiв що не так. В мене основна частина музики на NTFS роздiлi. Товаришi енетрiвцi що робити? :(
Станiслав 14.04.2010 17:40
Змiнив user "mpd" на user "externum" також змiнив log_file, pid_file та state_file i все запрацювало.
Але це не через те мiсце, вибачте :)
# sudo -u "mpd" ls /media/MusicHard
Видає
ls: невозможно открыть каталог /media/MusicHard: Отказано в доступе
Як змiнити права? Пiдкажiть будь ласка.
chugylo 15.04.2010 09:21
Навіщо ж мати доступ для користувача mpd, якщо сервер уже вдало запускається від імені користувача extrenum? Чи я щось не так зрозумів?
Станiслав 16.04.2010 06:54
Так це я перевiрив просто. Може в майбутньому треба буда права на NTFS роздiл мiняти.) Вiн вже дiйсно вдало запускається вiд iменi звичайного користувача.
chugylo 15.04.2010 09:19
follow_outside_symlinks "yes"
… і follow_inside_symlinks "yes" якщо потрібно.

додати коментар: