MPD - instalacja, konfiguracja, używanie
Kategoria: Artykuły, etykiety: multimedia, mpd, dla początkujących, audio
Dodany: 2015-09-13 17:28
Przez: Minio
Wyświetleń: 61837
Informacje wstępne
MPD (Music Player Daemon) to dość nietypowy odtwarzacz muzyczny stworzony z myślą o systemach uniksowatych (w tym o Linuksie). Spośród konkurencji wyróżnia go przede wszystkim implementacja modelu klient — serwer, czyli odseparowanie warstwy „grającej” od warstwy „sterującej”. Dzięki temu muzyka może grać nawet wtedy, gdy środowisko graficzne nie jest włączone, zaś sam odtwarzacz bardzo oszczędnie wykorzystuje zasoby komputera.
Program jest idealnym rozwiązaniem dla osób często restartujących środowisko graficzne, pracujących na minimalistycznych menedżerach okien oraz posiadających wiekowe/słabe komputery. Majsterkowicze mogą zainstalować go na komputerze bez monitora (np. Raspberry Pi) i sterować nim z dowolnego urządzenia w sieci lokalnej (np. telefonu z Androidem), tworząc w ten sposób własne rozwiązanie typu home audio system (HTCP).
Niniejszy artykuł krok po kroku opisuje, jak uruchomić MPD. Zajmiemy się jego instalacją, konfiguracją, wyborem klienta oraz podstawami debugowania. Na końcu przyjrzymy się mpdscribble
, niewielkiemu programowi służącemu do wysyłania informacji o odtwarzanych utworach na Last.fm. Artykuł powstał w opraciu o Debiana w wersji 8.2, ale zamieszczone instrukcje mogą być przydatne również dla użytkowników innych dystrybucji.
Instalacja
MPD znajduje się w repozytoriach wszystkich aktualnie wspieranych wersji Debiana, dzięki czemu instalacja sprowadza się do wydania (jako root) polecenia:
apt-get install mpd
Konfiguracja
Tryb systemowy a tryb użytkownika
Domyślnie MPD działa w trybie systemowym — uruchamiany jest podczas startu systemu, przyjmuje uprawnienia specjalnego użytkownika i działa w tle, oczekując na dalsze instrukcje.
Alternatywnie może zostać uruchomiony w trybie użytkownika, czyli tak samo jak właściwie wszystkie inne programy wykorzystywane podczas codziennej pracy z komputerem (przeglądarka internetowa, pakiet biurowy, odtwarzacz filmów itd.). MPD uruchomiony w ten sposób nie będzie odtwarzał muzyki gdy nie mamy uruchomionego środowiska graficznego, ale lepiej zintegruje się z pozostałymi komponentami współczesnego systemu linuksowego, takimi jak PulseAudio oraz udisks2.
Z punktu widzenia niniejszego poradnika, różnica pomiędzy trybem systemowym a trybem użytkownika sprowadza się do lokalizacji pliku konfiguracyjnego oraz sposobu automatycznego uruchamiania programu. Niezależnie od tego, który tryb wybierzemy, MPD będzie działał tak samo dobrze i oferował ten sam zestaw funkcji.
Edycja pliku mpd.conf
mpd.conf
to główny plik konfiguracyjny MPD; bez niego program nie będzie mógł być uruchomiony. W trybie systemowym jest to plik /etc/mpd.conf
, zaś w trybie użytkownika — $HOME/.config/mpd/mpd.conf
. Ten pierwszy jest tworzony podczas instalacji pakietu MPD, ten drugi musimy utworzyć samodzielnie. Jako podstawę możemy wykorzystać plik /usr/share/doc/mpd/examples/mpdconf.example.gz
.
Edycja pliku mpd.conf
nie powinna nastręczyć specjalnych trudności, ponieważ każda zmienna jest poprzedzona wyczerpującym komentarzem. W razie wątpliwości możemy również skonsultować się z dokumentacją, wydając polecenie man mpd.conf
. Najbardziej podstawowa konfiguracja dla trybu systemowego wygląda następująco:
music_directory "/home/user/muzyka"
playlist_directory "/home/user/muzyka"
db_file "/var/lib/mpd/mpd.db"
log_file "/var/log/mpd.log"
user "mpd"
audio_output {
type "alsa"
name "My ALSA Device"
}
Podczas modyfikacji pliku konfiguracyjnego powinniśmy zwrócić szczególną uwagę na dwie kwestie. Po pierwsze, wybór odpowiedniego wyjścia audio — bez tego nic nie usłyszymy w głośnikach. Po drugie, użytkownik uruchamiający program musi mieć uprawnienia wystarczające do odczytu wszystkich katalogów wskazanych w mpd.conf
oraz odczytu i zapisu wszystkich wymienionych plików.
Wybór klienta
MPD potrafi tylko i wyłącznie odtwarzać muzykę. Nawet do tak prostego zadania jak jej uruchomienie lub zatrzymanie potrzebujemy osobnego programu, zwanego klientem.
Zróżnicowanie programów klienckich jest ogromne. Jedne są kontrolowane przy pomocy wiersza poleceń, inne działają w środowisku graficznym, jeszcze innymi zarządzamy przy pomocy przeglądarki internetowej. Niektóre posiadają tylko podstawowe funkcje, inne mają ich tak wiele, że sterowanie MPD wydaje się być dodatkiem do czegoś zupełnie innego. W skrócie — każdy znajdzie coś dla siebie. Kompletna lista klientów znajduje się na stronach wiki MPD.
Osobiście polecam wypróbować ncmpc++, doskonały program działający w terminalu tekstowym, wykorzystujący bibliotekę ncurses. W Debianie możemy go zainstalować wydając polecenie
apt-get install ncmpcpp
Pierwsze uruchomienie
Przede wszystkim musimy uruchomić MPD. Gdy program działa w trybie systemowym, należy wydać komendę:
systemctl start mpd
Z kolei w trybie użytkownika wystarczy
mpd
Następnie uruchamiamy wybranego klienta.
Pomimo poprawnego uruchomienia obu programów, biblioteka utworów w MPD będzie pusta. Jest tak, ponieważ nie została ona odświeżona. W ncmpc++ wystarczy wcisnąc przycisk u
na klawiaturze (jak update). Niektóre inne klienty automatycznie odświeżają bibliotekę w momencie ich uruchomienia lub przy wykryciu zmian w metadanych plików.
Ustawienie zmiennych systemowych
Większość klientów domyślnie próbuje się połączyć z serwerem 127.0.0.1 na porcie 6600. Jeżeli uruchamiasz MPD na swoim komputerze i nie zmieniałeś ustawień portu (zmienna port
), możesz spokojnie pominąć ten punkt. Jeśli jednak zmieniałeś port lub chcesz się połączyć z serwerem MPD działającym na innym komputerze w sieci, musisz ustawić zmienne systemowe.
Zmienne są tylko dwie i ich nazwy jasno wskazują za co odpowiadają: MPD_HOST
(nazwa/adres komputera) i MPD_PORT
(port).
Środowisko należy skonfigurować w taki sposób, aby zmienne te były ustawione w chwili uruchomienia klienta.
Jednym ze sposobów jest ich zdefiniowanie w poleceniu uruchamiającym klienta:
MPD_HOST=host MPD_PORT=port ncmpcpp
Alternatywnie możemy je określić dla bieżącej sesji powłoki za pomocą polecenia export
:
export MPD_HOST=host MPD_PORT=port
To drugie polecenie możemy dopisać do swojego pliku $HOME/.bash_profile
(lub jego odpowiednika w używanej powłoce), dzięki czemu będą już zawsze skonfigurowane.
Potencjalne problemy
Jeżeli po uruchomieniu klienta nie widzisz zawartości biblioteki muzycznej, nie słyszysz nic w głośnikach pomimo wybrania pliku lub niepokoi Cię coś innego, uruchom MPD w następujący sposób:
mpd --no-daemon --verbose --stdout
Dzięki temu otrzymasz szczegółowy raport błędu na standardowym wyjściu konsoli. Zazwyczaj będzie on powiązany z brakiem któregoś z plików lub jego niewłaściwymi uprawnieniami. Problemy te z łatwością naprawisz przy pomocy touch
, chmod
oraz chown
. Jeżeli wykorzystujesz MPD w trybie systemowym, możesz spróbować automatycznie naprawić wszystkie problemy przy pomocy skryptu fix-mpd-permissions.sh.
Na specjalną uwagę zasługuje błąd o braku katalogu, podobny do poniższego:
music directory is not a directory: "/home/user/muzyka"
Może się on pojawić wtedy, kiedy użytkownik MPD nie posiada uprawnień do wykonania któregokolwiek z katalogów w podanej ścieżce. Dla przykładu, katalog domowy użytkownika w Arch Linux ma domyślnie uprawnienia 700
. MPD działajacy w trybie systemowym, pracujący na uprawnieniach innego użytkownika, nie będzie w stanie odczytać jego zawartości. Rozwiązaniem jest oczywiście ustawienie atrybutu wykonywalności dla wszystkich katalogów pojawiających się w ścieżce music_directory
.
Jeżeli wybrany przez Ciebie klient w ogóle się nie uruchamia lub pokazuje komunikat o braku połączenia z serwerem, przede wszystkim upewnij się, że serwer jest włączony (może wadliwy wpis w pliku konfiguracyjnym uniemożliwia jego start?). Następnie sprawdź, czy klient łączy się z odpowiednim komputerem na odpowiednim porcie.
Automatyczne uruchamianie
Gdy MPD działa w trybie systemowym, o jego automatyczne uruchomienie zadba systemd
. Nie jest wymagana żadna dodatkowa akcja z naszej strony.
Natomiast jeżeli MPD działa w trybie użytkownika, to sami musimy się upewnić, że zostanie on uruchomiony zaraz po zalogowaniu.
Przede wszystkim musimy wyłączyć automatyczne uruchamianie systemowej instancji MPD. Służy do tego polecenie:
systemctl disable mpd
Jeżeli używamy jednego ze środowisk graficznych zgodnych ze standardem XDG, takiego jak GNOME albo KDE SC, to nie musimy już nic więcej robić. Pakiet MPD w Debianie dostarcza plik /etc/xdg/autostart/mpd.desktop
, który poinstruuje środowisko graficzne o konieczności uruchomienia programu w momencie logowania.
W przeciwnym wypadku pozostaje nam ręczne uruchomienie MPD. Najprościej jest tego dokonać przy pomocy polecenia:
if ! ps -C mpd > /dev/null 2>&1; then mpd & ; fi
Taka konstrukcja zapobiega wielokrotnemu uruchomieniu MPD w sytuacji, gdy ten sam użytkownik zaloguje się więcej niż raz. Polecenie to należy dopisać do skryptu wykonywanego podczas uruchamiania środowiska graficznego lub umieścić w pliku ~/.bash_profile
.
Używanie
W tym momencie powinniśmy móc bez problemów łączyć się z MPD za pomocą wybranego klienta i odsłuchać dowolny utwór z posiadanej biblioteki. Konkretny sposób wykonania tych czynności zależy od wybranego klienta. W przypadku ncmpc++ można wcisnąć klawisz 1
(cyfra jeden), który pokaże ekran pomocy zawierający wszystkie skróty klawiaturowe obsługiwane przez odtwarzacz.
Instalacja i konfiguracja mpdscribble
mpdscribble jest prostym programem, który wysyła utwory odtwarzane przez MPD do serwisów Last.fm, Libre.fm oraz Jamendo. Jeżeli nie wiesz, do czego służą wymienione serwisy i nie interesuje Cię to, możesz spokojnie pominąć dalszą część artykułu.
mpdscribble można zainstalować wydając polecenie:
apt-get install mpdscribble
Podobnie jak MPD, mpdscribble może działać w trybie systemowym lub w trybie użytkownika. Jednocześnie tryby działania programów nie muszą być ze sobą zgodne — nawet gdy MPD działa w trybie systemowym, to nic nie stoi na przeszkodzie, aby każdy użytkownik miał swoją własną instancję mpdscribble.
Przygotowanie pliku konfiguracyjnego
Podczas instalacji pakietu utworzony zostanie plik /etc/mpdscribble.conf
, przeznaczony dla mpdscribble działającego w trybie systemowym. Jeżeli chcemy uruchomić program w trybie użytkownika, powinniśmy skorzystać z pliku $HOME/.mpdscribble/mpdscribble.conf
; za jego wzór może posłużyć /usr/share/mpdscribble/mpdscribble.conf
.
Struktura pliku konfiguracyjnego mpdscribble jest bardzo zbliżona do struktury pliku mpd.conf
. Większość zmiennych jest dobrze opisanych, a w razie potrzeby można zajrzeć do man mpdscribble
. Po pominięciu komentarzy, zawartość pliku przeznaczonego dla programu działającego w trybie systemowym może wyglądać następująco:
pidfile = /var/run/mpdscribble.pid
log = syslog
verbose = 1
daemon_user = mpdscribble
username = nazwa_użytkownika_last.fm
password = hasło_last.fm
journal = /var/cache/mpdscribble/lastfm.cache
Zamiast hasła możemy wpisać jego sumę kontrolną MD5, co delikatnie zwiększy bezpieczeństwo. Suma ta jest ciągiem znaków podobnym do c64e698ece633f5cfa9c081eb9535988
i możemy ją obliczyć przy pomocy polecenia:
echo -n 'hasło_last.fm' |md5sum |awk '{print $1}'
Jeżeli informacje o słuchanych utworach chcemy wysyłać do kilku serwisów jednocześnie, albo korzystamy z serwisu innego niż Last.fm, nasz plik konfiguracyjny musimy rozbudować o sekcje. Każda sekcja składa się z nazwy w nawiasach kwadratowych (np. [Jamendo]
) i zawiera zmienne url
, username
, password
oraz (opcjonalnie) journal
. Więcej szczegółów znajdziemy w przykładowym pliku konfiguracyjnym.
Konfiguracja trybu systemowego
systemd automatycznie uruchomi mpdscribble podczas uruchamiania komputera, więc konfiguracja trybu systemowego kończy się wraz z przygotowaniem pliku konfiguracyjnego.
Konfiguracja trybu użytkownika
Podczas przygotowywania mpdscribble do działania w trybie użytkownika powinniśmy zwrócić uwagę na trzy kwestie.
Po pierwsze, musimy samodzielnie utworzyć wszystkie pliki oraz katalogi do których odnosimy się w pliku ~/.mpdscribble/mpdscribble.conf
. mpdscribble nie utworzy ich automatycznie, nawet wtedy, gdy będzie miał odpowiednie uprawnienia.
Po drugie, mpdscribble nie potrafi interpretować zmiennych systemowych (jak $HOME
) oraz zapisu skróconego ~
. Wszystkie ścieżki muszą być podane w całości.
Po trzecie, plik konfiguracyjny nie powinien zawierać zmiennej daemon_user
. Jeżeli ją podamy, to mpdscribble i tak zakończy pracę natychmiast po uruchomieniu z powodu braku uprawnień do zmiany użytkownika.
Ponadto musimy zadbać o to, aby mpdscribble uruchamiał się automatycznie w trakcie logowania użytkownika. Muszą to zrobić również użytkownicy środowisk graficznych zgodnych z XDG, ponieważ pakiet mpdscribble nie dostarcza odpowiedniego pliku .desktop. Możemy do tego wykorzystać odpowiednio zmodyfikwoane polecenie zamieszczone w podpunkcie Automatyczne uruchamianie powyżej.
Większość użytkowników będzie również chciała wyłączyć systemową instancję mpdscribble, co można osiągnąć następującym poleceniem:
systemctl disable mpdscribble
Faktem jest, że program uruchomiony w trybie systemowym może spokojnie działać obok programu działającego w trybie użytkownika, ale taka konfiguracja raczej mija się z celem.
Zakończenie
Właściwie to byłoby na tyle — MPD jest w pełni sprawne, można nim sterować oraz wysyła informacje o granych utworach do serwisu Last.fm. Czego chcieć więcej?