Music Player Daemon (Polski)
MPD (Music Player Daemon) jest to lekki i szybki odtwarzacz dźwięku działający na zasadzie serwer-klient. MPD uruchamia się w tle jako usługa systemowa (daemon). Posiada obsługę playlist, zarządza muzyką na podstawie bazy danych. Do obsługi potrzebny będzie jeden z klientów czyli program obsługujący serwer mpd.
Instalacja MPD
Ostatnia stabilna wersja mpd dostępna jest w oficjalny repozytorium.
Wersje eksperymentalne/rozwojowe można znaleźć w AUR. Przykład: mpd-git
Konfiguracja MPD
MPD można używać lokalnie (na ustawieniach użytkownika), globalnie (ustawienia odnoszą się do wszystkich użytkowników), a także równolegle. Wybór kierunku zależy od przeznaczenia, przykładowo na komputerach domowych lepszym rozwiązaniem może okazać się konfiguracja lokalna.
Niezbędne katalogi i foldery do prawidłowego działania aplikacji:
database - baza danych muzyki pid - plik w którym przechowywany jest identyfikator procesu log - dziennik zdarzeń state - obecnie odtwarzane playlists - katalog z listami odtwarzania sticker.sql - plik bazy danych z dodatkowymi danymi programów-klientów
Aby MPD mogło odtwarzać dźwięk, ALSA, PulseAudio lub OSS muszą być prawidłowo skonfigurowane.
Konfiguracja lokalna
MPD może być skonfigurowany na koncie użytkownika (zamiast typowej konfiguracji globalnej). Takie rozwiązanie ma swoje korzyści:
- Pojedynczy katalog
~/.mpd
(lub jakikolwiek inny w/home/$USER/
) będzie zawierał wszystkie pliki konfiguracyjne. - Łatwiej uniknąć problemów z uprawnieniami.
Aby rozpocząć: stwórz katalog dla niezbędnych plików i playlist; stwórz wszystkie wymagane pliki:
$ mkdir -p ~/.mpd/playlists $ cp /usr/share/doc/mpd/mpdconf.example ~/.mpdconf $ touch ~/.mpd/{database,log,state,pid,sticker.sql}
Edytuj ~/.mpdconf
i sprecyzuj położenie plików:
music_directory "~/Muzyka" # Zakomentuj jeśli XDG wskazuje na muzykę. playlist_directory "~/.mpd/playlists" db_file "~/.mpd/database" log_file "~/.mpd/log" pid_file "~/.mpd/pid" state_file "~/.mpd/state" sticker_file "~/.mpd/sticker.sql"
Od teraz MPD może być uruchomione polecenie mpd
(wpierw sprawdzi ~/.mpdconf
, później ~/etc/mpd.conf
[brak wsparcia dla katalogów konfiguracji XDG, jak ~/.config/mpd/mpd.conf
]). Aby sprecyzować położenie pliku:
mpd /path/to/mpd.conf
Aby uruchomić MPD po zalogowaniu, dodaj do ~/.profile
(lub innego pliku Autostart):
# Uruchamianie MPD (jeżeli nie został już uruchomiony) [ ! -s ~/.mpd/pid ] && mpd
Aby uruchomić wraz z X.org(iem), dodaj do xprofile lub xinitrc. Przez niektóre DE, pliki te są ignorowane (np. przez GNOME), zastąpić je można plikiem autostart (specyfikacja XDG) - tu: ~/.config/autostart/mpd.desktop
; to:
[Desktop Entry] Encoding=UTF-8 Type=Application Name=Music Player Daemon Comment=Serwer odtwarzający muzykę Exec=mpd StartupNotify=false Terminal=false Hidden=false X-GNOME-Autostart-enabled=false
Konfiguracja globalna
Domyślnie w Archu pliki MPD trzymane są tu: /var/lib/mpd
; domyślny użytkownik to mpd.
Edytuj /etc/mpd.conf
aby ustawić:
music_directory "/ścieżka/do/katalogu/z/muzyką" playlist_directory "/var/lib/mpd/playlists" db_file "/var/lib/mpd/mpd.db" log_file "syslog" pid_file "/run/mpd/mpd.pid" state_file "/var/lib/mpd/mpdstate" user "mpd"
Ustawiliśmy właśnie MPD aby był uruchamiany na użytkowniku mpd, lecz właścicielem /var/lib/mpd
jest root, możemy to zmienić:
# chown -R mpd /var/lib/mpd
Aby uruchomić MPD wykonaj:
# systemctl start mpd.service
Jeżeli chcesz by MPD było automatycznie uruchamiane przy każdym starcie systemu, wykonaj:
# systemctl enable mpd.service
Katalog muzyki
MPD potrzebuje uprawnień +x
dla wszystkich rodziców katalogu muzyki. Jeżeli nie chcesz tego zmieniać, możesz podmontować swój katalog z muzyką pod katalog do którego MPD ma wystarczające uprawnienia.
# mkdir /var/lib/mpd/muzyka # echo "/ścieżka/do/katalogu/muzyka /var/lib/mpd/muzyka none bind" >> /etc/fstab # mount -a
Sprawdź dyskusję na forum (en).
Dodatkowym wyjściem byłoby stworzenie symbolicznego linku do /var/lib/mpd/muzyka
.
# mkdir /var/lib/mpd/muzyka # ln -s /ścieżka/do/katalogu/muzyka /var/lib/mpd/muzyka/
Pamiętaj o uprawnieniach we wnętzu katalogu.
Zmiana użytkownika
Zmiana grupy w której uruchamiany jest mpd może powodować błędy typu:
- output: Failed to open "My ALSA Device"
- [alsa]: Failed to open ALSA device "default": No such file or directory
- player_thread: problems opening audio device while playing "Song Name.mp3"
Dzieje się tak, dlatego że domyślnie MPD jest członkiem grupy audio, a pliki w /dev/snd/
też są w grupie audio, co jest dobre ale nie koniecznie prawdziwe w przypadku innego użytkownika. Więc dodaj go do grupy audio:
# gpasswd -a mpd audio
Wszystkie opcje konfiguracji
Plik /etc/mpd.conf
jest podzielony na kategorie, spolszczone opcje podane są kategoriami w kolejności takiej samej jak w pliku konfiguracyjnym. Opcje dostępne w wersji 0.17.5 lub nowszej.
Pliki i katalogi
-
music_directory - opcja do ustawienia katalogu z muzyką, która zostanie dodana do bazy MPD. W przypadku zakomentowania, MPD doda katalog XDG, w razie braku tegoż, dodawanie muzyki do MPD będzie dostępne tylko poprzez protokół
file://
; - playlist_directory - lokalizacja katalogu dla wewnętrznych playlist MPD;
- db_file - lokalizacja pliku bazy danych;
-
log_file - lokalizacja pliku z rejestrem zdarzeń. Ta opcja jest dobra przy usuwaniu problemów, ilość szczegółów zależy od ustawień opcji:
log_level
. Gdy opcja ma wartość"syslog"
, wtedy używany będzie systemowy rejestrator zdarzeń; -
pid_file - jeżeli życzysz sobie używać
mpd --kill
do zatrzymywania mpd, musisz podać ścieżkę do pliku w którym mpd zapisze swój identyfikator procesu; - state_file - jeżeli życzysz sobie obsługi sesji (zapisuje stan odtwarzania utworu, playlistę, odtwarzanie/pauza, itp.), podaj ścieżkę do pliku do którego mpd będzie zapisywał te informacje, a po ponownym uruchomieniu sesja zostanie przywrócona;
- sticker_file - lokalizacja pliku bazy danych z dodatkowymi informacjami przylepionymi do utworów.
Podstawowe ustawienia MPD
- user - jeżeli uruchomiony z konta root, MPD porzuci przywileje roota i uruchomi się jako podany użytkownik. Jeżeli uruchomiony z konta użytkownika, mpd będzie pracować jako ten użytkownik. Odradzane jest by mpd posiadało pełne przywileje roota;
- group - ta opcja ustawia grupę podstawową na której będzie działał MPD. Jeżeli nie sprecyzowane, używana będzie podstawowa grupa użytkownika. Pożyteczne gdy MPD aby mieć uprawnienia do używania karty dźwiękowej, musi być w grupie "audio";
- bind_to_address - adres i port nasłuchiwany przez mpd. Wybierz jedno z poniższych:
bind_to_address "127.0.0.1" # nasłuchuj tylko lokalnie bind_to_address "any" # nasłuchuj też zdalnie bind_to_address "/ścieżka/socket" # nasłuchuj lokalnie na pliku socket
- port - port na którym ma być prowadzony nasłuch;
-
log_level - kontrola poziomu logowanych informacji. Można użyć:
- "default" - domyślnie
- "secure" - komunikaty bezpieczeństwa
- "verbose" - rozbudowane informacje (polecane do rozwiązywania problemów)
- gapless_mp3_playback - odtwarzanie bez odstępów (gapless playback). Jeżeli masz problemy z dźwiękiem, wyłącz tą opcję albo użyj programu vbrfix;
- restore_paused - ustawienie tej opcji spowoduje że MPD po starcie będzie pauzował odtwarzanie;
- save_absolute_paths_in_playlists - ta opcja spowoduje zapis playlist tak by można było z nich korzystać w innych programach;
-
metadata_to_use - opcja określa które meta-dane będą importowane do muzycznej bazy danych (działa tylko przy dodawaniu nowych). Dostępne meta-dane to:
- artist - artysta
- album - album
- title - tytuł
- track - numer utworu
- name
- genre - gatunek muzyczny (ale nie styl)
- date - rok wydania
- composer - kompozytor
- performer - wykonawca
- comment -komentarz
- disc - numer płyty
- musicbrainz_artistid - id artysty w serwisie musicbrainz
- musicbrainz_albumid - id albumu w serwisie musicbrainz
- musicbrainz_albumartistid - id artysty albumu w serwisie musicbrainz
- musicbrainz_trackid - id utworu w serwisie musicbrainz
- auto_update - automatyczne aktualizuj, gdy pliki w katalogu z muzyką zostały zmodyfikowane;
-
auto_update_depth - głębokość podkatalogów, które będą obserwowane po uaktywnieniu opcji
auto_update
. Dla 0 podkatalogi nie będą obserwowane, jedynie pliki w katalogu głównym. Domyślnie zakomentowane co oznacza brak limitów.
Zachowywanie symbolicznych linków
-
follow_outside_symlinks - ustaw tą opcje na
"yes"
jeśli chcesz by MPD podążał za linkami do zewnętrznych katalogów; -
follow_inside_symlinks - ustaw tą opcję na
"yes"
jeśli chcesz by MPD traktował linki do wewnętrznych katalogów tak jak linki do zewnętrznych.
Zeroconf / Avahi
-
zeroconf_enabled - jeśli ustawione na
"yes"
, MPD będzie publikować informacje za pomocą Zeroconf/Avahi; - zeroconf_name - unikatowa nazwa dla MPD, którą będzie przedstawiał się w sieci.
Kontrola dostępu
-
password - MPD może wymagać od użytkownika podanie hasła. Możesz ustawić jedno lub więcej haseł. Możesz podać co ten użytkownik będzie mógł robić, a co zostanie mu zabronione. Po zalogowaniu się z użyciem danego
"[hasła]@[użytkownik będzie mógł to],[to],[to]"
; - default_permissions - domyślne ustawienia dla nie zalogowanych użytkowników. Ta opcja określa na co pozwalasz nie zalogowanym użytkownikom. Domyślnie wszyscy użytkownicy mają pełny dostęp do MPD jeżeli żadne hasło nie zostało określone powyżej. W przeciwnym wypadku nie mają żadnego dostępu aby to zmienić ustaw tą opcję.
Wyjście dźwięku
MPD obsługuje wiele typów wyjść dźwięku, potrafi jednocześnie wysyłać dźwięk na wiele wyjść. Możesz ustawić jedno lub więcej, jeśli tego nie zrobisz, MPD będzie próbował każdorazowo przy uruchomieniu automatycznie ustawiać wyjście..
-
audio_output{} - W swoich klamrach zawiera: nazwę, typ i opcje dostępne dla danego typu. Zobacz przykłady konfiguracji. Opis niektórych opcji z przykładów:
- type - typ wyjścia;
- name - twoja nazwa dla wyjścia;
-
device (opcjonalne) - urządzenie alsa, np:
hw:0,0
dla pierwszej karty i pierwszego wejścia ALSAy; -
format (opcjonalne) - zawartość opcji:
"próbkowanie:głębia:kanały"
; -
mixer_type (opcjonalne) - ściszanie/pogłaśnianie realizowane
"hardware"
(sprzętowo),"software"
(programowo),"none"
(brak); -
use_mmap (opcjonalne) - jeżeli chcesz używać alsa_mmap, ustaw na
"yes"
; -
auto_resample (opcjonalne) - jeśli chcesz wyłączyć automatyczne konwertowanie próbkowania dźwięku, ustaw na
"no"
; -
mixer_control (opcjonalne) - nazwa suwaka który będzie przesuwany podczas ściszania/pogłaśniania (domyślnie
"master"
), wymagamixer_type
ustawionego na"hardware"
.
Ustawienia ogólne dla konwertowania i jego jakości:
-
audio_output_format - wszystkie dekodowane dźwięki będą konwertowane do tego formatu zanim zostaną wysłane do wyjścia dźwięku. Zawartość opcji:
"próbkowanie:głębia:kanały"
; -
samplerate_converter - ustaw jakość konwertowania próbkowania, możliwe opcje:
- Best Sinc Interpolator - najlepsza jakość ale najwolniejsze
- Medium Sinc Interpolator - średnia jakość
- Fastest Sinc Interpolator - szybkość ponad jakość
- ZOH Interpolator - jakieś ubogie
- Linear Interpolator - i jeszcze bardziej
- internal - wbudowane, kiepskie
Normalizacja lub obsługa replaygain
-
replaygain - ustaw obsługę replaygain na
"off"
(wyłączona),"track"
(utwór),"album"
(album); - replaygain_preamp - przycisz lub pogłośnić pliki o podaną ilość decybeli. Obsługa replaygain musi być włączona, a plik musi zawierać niezbędne tagi;
-
volume_normalization - wyciszanie w locie, tak aby wszystkie pliki miały podobny poziom hałasu, poprzednik replaygain. Jeśli chcesz włączyć, ustaw na
"yes"
.
Wewnętrzne bufory MPD
- audio_buffer_size - rozmiar buforu dekodowanego dźwięku, nie zmieniaj jeśli dalej nie wiesz co to robi;
- buffer_before_play - minimalny rozmiar zapełnionego buforu w procentach, przed rozpoczęciem odtwarzania.
Limitacja zasobów
Za pomocą tych ustawień można zmniejszyć zużycie zasobów. Te opcje powinny być na tyle małe by nie spowodować zagrożeń bezpieczeństwa.
- connection_timeout - czas (w sec.) bezczynności połączenia po którym zostanie ono zamknięte;
- max_connections - maksymalna ilość równoległych połączeń;
- max_playlist_length - maksymalna wielkość playlisty;
- max_command_list_size - maksymalna długość listy poleceń;
- max_output_buffer_size - maksymalny rozmiar buforu wyjścia.
Ustawienia TCP (keep alive)
Tylko dla klientów podłączonych przy pomocy systemów obsługujących tą funkcję. Pozwala wykryć systemy, które nie zamknęły połączenia, a nie są dostępne w sieci.
To nie jest zazwyczaj konieczne lecz może się przydać dla połączeń typu wifi, które lubią rwać połączenia. W połączeniu z max_connections
może doprowadzić do zapełnienia limitu uniemożliwiając na nowe połączenia.
-
tcp_keep_alive - ustaw na
"yes"
aby włączyć keepalive; - tcp_keep_alive_idle - czas nieaktywności, po upływie którego, połączenie zostanie sprawdzone;
-
tcp_keep_alive_interval - czas każdego kolejnego sprawdzania po
tcp_keep_alive_idle
; - tcp_keep_alive_count - liczba nieudanych prób zanim połączenie zostanie zamknięte.
Kodowanie znaków
Jeżeli nazwy plików lub katalogów nie są wyświetlane prawidłowo, możesz tu, to zmienić. W większości przypadków powinno wystarczyć "ISO-8859-1"
lub "UTF-8"
. Musisz ponownie stworzyć bazę danych aby twoje ustawienia zostały zapisane (użyj mpd --create-db).
- filesystem_charset - kodowanie dla systemu plików;
- id3v1_encoding - kodowanie meta-danych.
Klienty
Do obsługi MPD potrzebny jest oddzielny klient. Zobacz listę klientów na mpd wiki. Popularne to:
Konsola
- mpc — Prosty klient w duchu KISS. Dostępne są wszystkie podstawowe funkcje
- ncmpc — Klient oparty o bibliotekę Ncurses
- ncmpcpp — Niemalże identyczny klon ncmpc, z kilkoma dodatkowymi funkcjami jak: edytor tagów, wyszukiwarka
- http://unkart.ovh.org/ncmpcpp/[dead link 2021-05-17 ⓘ] || ncmpcpp
- pms — Wysoce rozbudowany i funkcjonalny klient Ncurses
- http://pms.sourceforge.net/ || pmusAUR[broken link: package not found]
- vimpc — Klient oparty o Ncurses z obsługą w stylu edytora vi
- https://sourceforge.net/projects/vimpc/ || vimpcAUR[broken link: package not found]
Graficzne
- Ario — Bogaty w funkcje klient GTK2, wygląd inspirowany Rythmboxem
- QmpdClient — Klient napisany przy użyciu Qt 4.x
- http://bitcheese.net/wiki/QMPDClient[dead link 2021-05-17 ⓘ] || qmpdclientAUR
- Sonata — Elegancki program napisany w Python i GTK+
- gmpc — Klient w GTK2. Projektowany by być lekkim, łatwym, a przy okazji dostarczać wszystkie opcje MPD. Użytkownicy mogą wybierać kilka różnych metod przeglądania bazy muzycznej, rozszerzać opcje wtyczkami.
- Cantata — Bogaty w opcje, z dużą swobodą konfiguracji interfejsu, klient MPD dla KDE4
- https://code.google.com/p/cantata/ || cantata-qtAUR[broken link: package not found]
Sieć
- Patchfork — Aplikacja internetowa do obsługi MPD, napisana w PHP i Ajaxie
- http://mpd.wikia.com/wiki/Client:Pitchfork[dead link 2021-05-17 ⓘ] || patchfork-gitAUR[broken link: package not found].