Blog jak widać już nie jest aktualizowany. I raczej nie będzie. Wisi sobie ot tak, ze względów historycznych :)

MPD (Music Player Deamon), czyli aplikacja serwerowa do odtwarzania muzyki

Krzysztof Rygielski | 2009-10-10 21:25 | Kategorie: Linux, MPD

Do tej pory odtwarzałem muzykę na moim laptopie, podłączając go długim kablem do amplitunera. Takie rozwiązanie ma jednak pewną niedogodność - ograniczenie długością kabla. Słyszałem kiedyś co nieco o MPD, postanowiłem zapoznać się z tym nieco bliżej.

MPD jest odtwarzaczem multimediów w systemie linux, działającym praktycznie jako serwer dźwięku. Do obsługi wymaga oprogramowania klienckiego np. mpc (narzędzie konsolowe) czy Sonata (korzystający z GTK+). Stwierdziłem, że całkiem przyjemnie byłoby móc umieścić kolekcję muzyczną na osobnej maszynie, która pełniła by rolę odtwarzacza i móc sterować nią zdalnie z mojego laptopa, czy też z jakiejkolwiek innej maszyny.

Pierwszym krokiem była instalacja mpd, od razu można też zainstalować narzędzie konsolowe, mpc:

$ poldek -i mpd mpc

Po zainstalowaniu mpd należy go skonfigurować. W pliku konfiguracyjnym /etc/mpd.conf wartych uwagi jest kilka opcji:

music_directory      "/music"                 # lokalizacja kolekcji muzyki
playlist_directory   "/var/lib/mpd/playlists" # katalog, w którym przechowywane będą playlisty
db_file              "/var/lib/mpd/mpd.db"    # plik bazy danych mpd
log_file             "/var/log/mpd/mpd.log"   # nie trzeba tłumaczyć... :)
error_file           "/var/log/mpd/mpd.error" # tego też nie :)

Poza tym, odkomentowałem jeszcze linijkę z numerem portu:

port                 "6600"

Zasadniczo to tyle jeśli chodzi o konfigurację. Chociaż z niewiadomych względów baza danych kolekcji nie chciała się wygenerować po zwykłym zrestartowaniu demona mpd. Powinno to zadziałać po wklepaniu komendy:

$ mpd --create-db

Oczywiście najpierw trzeba zatrzymać demona mpd, wklepać tą komendę, potem zabić mpd i odpalić demona. Ta procedura raz u mnie działała, raz nie. Ale restart całej maszyny zdecydowanie pomógł. Potem można użyć narzędzia konsolowego mpc do interakcji z mpd. Od razu niestety nic nie będzie grało. Najpierw trzeba wygenerować playlistę. Ja dla testu władowałem do playlisty całą zawartość kolekcji w następujący sposób:

mpc ls | mpc add

Teraz dopiero można wklepać:

mpc play

i powinna zacząć grać muzyka :-)

Mpc domyśnie łączy się z lokalnym serwerem mpd, ale można go używać zdalnie. Wystarczy ustawić odpowiednie zmienne środowiskowe w następujący sposób:

export MPD_HOST=nazwa_hosta
export MPD_PORT=6600

Oczywiście korzystanie z konsolowego narzędzia nie jest super wygodne. Warto zatem zaopatrzyć się w jakiegoś graficznego klienta mpd. Ja wypróbowałem program o nazwie Sonata. Jego konfiguracja jest stosunkowo prosta. Wystarczy w preferencjach podać adres hosta, numer portu i wszystko działa. Można nawet utworzyć kilka profili dla łączenia się z różnymi serwerami mpd. Można tam również bardzo łatwo tworzyć playlisty, co w przypadku mpc nie jest już tak intuicyjne. Nie będę tego już opisywał :-)

Dodatkową zaletą mpd jest możliwość wyświetlania statusu w pidginie przy użyciu opisywanego już przeze mnie pluginu musictracker. Wystarczy wybrać jako odtwarzacz MPD i skonfigurować podając nazwę hosta i port. Również conky dysponuje funkcjami pozwalającymi na połączenie z serwerem mpd i wyświetlanie szczegółowych informacji o utworze.

Generalnie mpd w zestawieniu z odpowiednim programem klienta, to świetne narzędzie do zdalnego odtwarzania muzyki. W chwili obecnej mogę odtwarzać muzykę zdalnie z mojego laptopa, bez ograniczeń nakładanych przez długość kabla audio łączącego mnie z amplitunerem :-)

Aktualizacja: Małe sprostowanie co do zmiennych środowiskowych MPD_HOST i MPD_PORT. O ile są one potrzebne do kontrolowania mpd przy użyciu mpc, to dodanie ich na stałe do np. .bash_profile, aby ustawiały się wraz z zalogowaniem do systemu, chyba nie jest dobrym pomysłem. Sonata gdzieś zgubiła zdefiniowane połączenia i nie chciała nawet dać możliwości utworzenia nowego. Dopiero gdy usunałem te zmienne z .bash_profile i się przelogowałem to zaczęło działać prawidłowo. Nie wiem na ile jedno wiąże się z drugim, ale takie są moje obserwacje.