Narzędzia użytkownika

Narzędzia witryny


fedora:uslugi:mpd

The Music Player Daemon

Jeżeli system będzie działać tylko jako serwer MPD to środowisko graficzne możemy wyłączyć.

sudo systemctl set-default multi-user.target

Sprawdzić możemy poleceniem:

sudo systemctl get-default

Powrócić do wersji graficznej możemy:

sudo systemctl set-default graphical.target

Instalacja

Instalacja serwisu mpd

sudo dnf install mpd

Dodanie użytkownika mpd do grupy audio

sudo usermod -aG audio mpd

Usunięcie użytkownika z grupy audio

sudo gpasswd -d nazwa_użytkownika audio

Uruchomienie serwera mpd jako usługi systemowej

Edycja pliku /etc/mpd.conf

mpd.conf
# Ścieżka do katalogu, w którym MPD przechowuje pliki muzyczne.
music_directory "/var/lib/mpd/music"
# Ścieżka do katalogu, w którym MPD przechowuje listy odtwarzania.
playlist_directory "/var/lib/mpd/playlists"
# Lokalizacja pliku bazy danych, który MPD używa do przechowywania informacji o dostępnych plikach muzycznych.
db_file "/var/lib/mpd/mpd.db"
# Ścieżka do pliku logów, w którym MPD zapisuje swoje komunikaty dotyczące błędów i działania.
log_file "/var/l_g/mpd/mpd.log"
# Ścieżka do pliku stanu, w którym MPD zapisuje informacje o aktualnym stanie odtwarzania.
state_file "/var/lib/mpd/mpdstate"
# Użytkownik systemowy, pod którym działa MPD.
user "mpd"
# Grupa systemowa, do której należy użytkownik MPD.
group "audio"
# Adres IP, na którym MPD nasłuchuje na połączenia z klientami.
bind_to_address "0.0.0.0"
# Port, na którym MPD nasłuchuje połączeń.
port "6600"
# Umożliwia automatyczne wykrywanie MPD w sieci przy użyciu zeroconf (np. Bonjour).
zeroconf_enabled "yes"
# Nazwa, pod którą MPD będzie wykrywany w sieci.
zeroconf_name "Music Player @ %h"
# Sekcja definiująca wtyczkę wejściową, która pozwala na odtwarzanie strumieni z internetu.
input {
        plugin "curl"
}
# Kodowanie znaków, które MPD używa do obsługi plików w systemie.
filesystem_charset "UTF-8"
# Sekcja definiująca konfigurację wyjścia audio.
audio_output {
        # Typ wyjścia audio (w tym przypadku ALSA, co jest standardowym systemem audio w Linuksie)
        type                    "alsa"
        # Nazwa wyjścia, która może być używana w klientach MPD.
        name                    "My ALSA Device"
        # Urządzenie audio, które MPD powinien używać (wskazuje na kartę dźwiękową i urządzenie)
        device                  "hw:1,0"
        # Ustawienie dotyczące rodzaju miksera (sprzętowy, który kontroluje rzeczywistą głośność na urządzeniu)
        mixer_type              "hardware"
        # Jeżeli nie chcesz kontrolować głośności to mixer_type "none"
        # Nazwa kontrolera głośności, który MPD będzie używał do sterowania poziomem głośności
        mixer_control           "Master"
        # Jeżeli podstawowymi plikami audio będą pliki flac, ogg i mp3 to
        dop                     "no"
}

Pozbyć się pulseaudio i pipewire

sudo dnf remove pipewire
sudo dnf remove pulseaudio

Konfiguracja domyślnej karty ALSA w /etc/asound.conf

asound.conf
defaults.ctl.card 1
defaults.pcm.card 1
  • defaults.ctl.card 1 – Definiuje domyślną kartę dźwiękową używaną do kontroli miksera (czyli ustawienia głośności, wyciszania i innych parametrów dźwiękowych). Oznacza to, że gdy ALSA będzie musiała kontrolować ustawienia miksera dźwięku, będzie używać karty numer 1.
  • defaults.pcm.card 1 – Ustawia domyślną kartę dźwiękową używaną do odtwarzania i nagrywania dźwięku, zwaną PCM (Pulse Code Modulation). Oznacza to, że wszystkie programy korzystające z ALSA będą domyślnie wysyłać dźwięk do karty numer 1 (w systemie może być więcej niż jedna karta dźwiękowa).

Można również użyć formatu zapisu jak poniżej

asound.conf
pcm.!default {
    type hw
    card 1
}
 
ctl.!default {
    type hw
    card 1
}

Przydatne polecenia do uzyskania informacji o karcie

lspci | grep -i audio
sudo lspci -v | grep -A7 -i audio
aplay -l
lsmod | grep snd

Ustawienie domyślnego poziomu głośności

Po uruchomieniu systemu operacyjnego dumyślny poziom głośności ustawia usługa alsa-restore o ile została zainstalowana i odblokowana.

amixer set Master 100%
sudo alsactl store

Uruchomienie usługi

sudo systemctl enabled mpd
sudo systemctl start mpd
sudo systemctl status mpd

Instlalcja prostego klienta mpd

sudo dnf install mpc

Instalacja bardziej przyjaznego klienta mpd

sudo dnf install ncmpcpp

Użycie

ncmpcpp -h adres_serwera -p 6600

Obsługa plików OGG

Jeżeli serwer nie odtwarza plików .ogg instalujemy pakiet vorbis-tools poleceniem:

sudo dnf install vorbis-tools

Konfiguracja globalna

W systemie warto ustawić domyślny poziom głośności po starcie systemu. Logujemy się na konto root. Nie korzystamy z sudo czy su -. Po zalogowaniu się ustawiamy poziom np w alsamixer. Po ustawieniu żądanego poziomu zapisujemy poleceniem:

alsactl store

Konfiguracja użytkownika

mkdir -p ~/.config/mpd
nano ~/.config/mpd/mpd.conf

Przykład konfiguracji mpd.conf:

# Muzyka - ustaw ścieżkę do twojej kolekcji muzycznej
music_directory "~/Muzyka"
 
# Katalog na pliki bazy danych MPD
db_file "~/.config/mpd/mpd.db"
 
# Katalog na plik playout socket
log_file "~/.config/mpd/mpd.log"
 
# Katalog na plik z kolejką odtwarzania
state_file "~/.config/mpd/mpd.state"
 
# Katalog na plik z informacją o głośności
sticker_file "~/.config/mpd/sticker.sql"
 
# Adres, na którym MPD będzie działał
bind_to_address "0.0.0.0"
port "6600"
 
# Ustawienia dla katy dźwiękowej na płycie terminala WYSE
audio_output {
        type                    "alsa"
        name                    "My ALSA Device"
        device                  "hw:1,0"   # Numer kolejny karty
        mixer_type              "hardware" # Typ miksera
        mixer_control           "Master"   # Który suwak
}
 
# Ustawienia dla wyjścia HDMI na płycie terminala WYSE
audio_output {
        type            "alsa"
        name            "HDMI Audio"
        device          "plughw:0,3"  # Dopasuj numer karty i urządzenia
        mixer_type	"none"    # "hardware" lub możesz użyć "none", jeśli chcesz pełną kontrolę
}

Utwórz katalogi MPD

mkdir -p ~/.config/mpd/playlists
touch ~/.config/mpd/mpd.db ~/.config/mpd/mod.log ~/.config/mpd/mod.state ~/.config/mpd/sticker.sql

Skonfiguruj autostart usługi MPD

systemctl --user enable --now mpd

Uruchom usługę MPD

systemctl --user start mpd

Sprawdź, czy MPD jest aktywny

systemctl --user status mpd

Do odtwarzania utworów mamy do dyspozycji klientów mpc, ncmpcpp lub graficzny Cantata.

Jeżeli mamy problem z połączeniem sprawdź firewall:

Sprawdzamy nazwy aktywnych stref:

sudo firewall-cmd --get-active-zones

Przykładowy wynik działania polecenia i w tym wypadku port usługi mpd musimy dodać do strefy home:

home
  interfaces: wlo1
public (default)

Dodanie usługi do strefy home i restart firewall:

sudo firewall-cmd --zone=home --permanent --add-service=mpd
sudo firewall-cmd --reload

Sprawdzenie reguł strefy home:

sudo firewall-cmd --zone=home --list-all

W wyniku działania polecenia otrzymujemy:

home (active)
  target: default
  ingress-priority: 0
  egress-priority: 0
  icmp-block-inversion: no
  interfaces: wlo1
  sources: 
  services: dhcpv6-client mdns mpd samba-client ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Inne ustawienia

Sprawdzenie aktualnie używanych modułów audio

lsmod | grep snd

Przykładowy wynik działania polecenia:

snd_hda_codec_realtek   208896  1
snd_hda_codec_generic   131072  1 snd_hda_codec_realtek
snd_hda_codec_hdmi    102400  1
snd_hda_scodec_component    20480  1 snd_hda_codec_realtek
snd_hda_intel          69632  2
snd_intel_dspcfg       40960  1 snd_hda_intel
snd_intel_sdw_acpi     16384  1 snd_intel_dspcfg
snd_usb_audio         598016  1
snd_usbmidi_lib        57344  1 snd_usb_audio
snd_hda_codec         225280  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_ump                40960  1 snd_usb_audio
snd_rawmidi            57344  2 snd_usbmidi_lib,snd_ump
snd_hda_core          155648  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
mc                     90112  1 snd_usb_audio
snd_hwdep              20480  2 snd_usb_audio,snd_hda_codec
snd_seq               135168  0
snd_seq_device         16384  3 snd_seq,snd_ump,snd_rawmidi
snd_pcm               196608  5 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
snd_timer              53248  2 snd_seq,snd_pcm
snd                   163840  20 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_ump,snd_pcm,snd_rawmidi
soundcore              16384  1 snd

Lista wykrytych urządzeń audio

aplay -l

Przykładowy wynik działania polecenia:

**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [Philips FTV]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 0: ALC269VB Analog [ALC269VB Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: U0x262a0x9023 [USB Device 0x262a:0x9023], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: U0x262a0x9023 [USB Device 0x262a:0x9023], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Wyświetlenie dostępnych wyjść urządzeń audio

aplay -L

Przykładowy wynik działania polecenia:

null
    Discard all samples (playback) or generate zero samples (capture)
pipewire
    PipeWire Sound Server
hdmi:CARD=Generic,DEV=0
    HD-Audio Generic, Philips FTV
    HDMI Audio Output
sysdefault:CARD=SB
    HDA ATI SB, ALC269VB Analog
    Default Audio Device
front:CARD=SB,DEV=0
    HDA ATI SB, ALC269VB Analog
    Front output / input
surround21:CARD=SB,DEV=0
    HDA ATI SB, ALC269VB Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=SB,DEV=0
    HDA ATI SB, ALC269VB Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=SB,DEV=0
    HDA ATI SB, ALC269VB Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=SB,DEV=0
    HDA ATI SB, ALC269VB Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=SB,DEV=0
    HDA ATI SB, ALC269VB Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=SB,DEV=0
    HDA ATI SB, ALC269VB Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
sysdefault:CARD=U0x262a0x9023
    USB Device 0x262a:0x9023, USB Audio
    Default Audio Device
front:CARD=U0x262a0x9023,DEV=0
    USB Device 0x262a:0x9023, USB Audio
    Front output / input
surround21:CARD=U0x262a0x9023,DEV=0
    USB Device 0x262a:0x9023, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=U0x262a0x9023,DEV=0
    USB Device 0x262a:0x9023, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=U0x262a0x9023,DEV=0
    USB Device 0x262a:0x9023, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=U0x262a0x9023,DEV=0
    USB Device 0x262a:0x9023, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=U0x262a0x9023,DEV=0
    USB Device 0x262a:0x9023, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=U0x262a0x9023,DEV=0
    USB Device 0x262a:0x9023, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=U0x262a0x9023,DEV=0
    USB Device 0x262a:0x9023, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
iec958:CARD=U0x262a0x9023,DEV=1
    USB Device 0x262a:0x9023, USB Audio #1
    IEC958 (S/PDIF) Digital Audio Output

Ustawienie kolejnego numeru urządzenia audio za pomocą opcji ładowania modułu

Edycja pliku /etc/modprobe.d/snd-usb-audio.conf

snd-usb-audio.conf
options snd-usb-audio index=2

Jeżeli pliku nie ma to go tworzymy. W powyższym urządzenie audio które korzysta z modułu snd-usb-audio zawsze powinno powinno mieć przydzielony numer 2. Jeżeli posiadamy więcej urządzeń audio podłączonych do portów USB konfiguracja może wyglądać następująco:

snd-usb-audio.conf
# Texas Instruments PCM2704C stereo audio DAC 08bb:27c4
# SAVITECH Corp. SA9023 audio controller 262a:9023
options snd_usb_audio index=4,5 vid=0x08bb,0x262a pid=0x27c4,0x9023

Jak widać w zakomentowanych liniach pierwszy to DAC oparty o chipset PCM2704C a kolejny to SA9023. W tym przykładzie PCM2704C otrzyma numer 4 a SA9023 numer 5. Opcje te muszą być wprowadzone w jednej linii dla obu urządzeń ponieważ gdybyśmy zrobili to oddzielnie system przydzieli określone ustawienia tylko pierwszemu urządzeniu a kolejne otrzyma ustawienia domyślne.

Optymalne ustawienia dla DAC PCM2704

mpd.conf
audio_output {
	type		"alsa"
	name		"DAC PCM2704"
	device		"hw:2,0"
	format		"44100:16:2"
	mixer_type	"none"   
	auto_resample   "no"
	auto_channels   "no"
	auto_format     "yes"
}
  1. auto_resample „no”
    • Opis: Wyłącza automatyczne resamplowanie (zmianę częstotliwości próbkowania) przez MPD.
    • Efekt: MPD przesyła dane w ich oryginalnej częstotliwości próbkowania. Jeśli plik audio ma 44.1 kHz, dane będą przesyłane z tą samą częstotliwością, bez dostosowania do specyfikacji urządzenia.
    • Zastosowanie: Ważne dla uzyskania bit-perfect, jeśli DAC obsługuje natywne próbkowanie. Wyłączenie resamplowania pozwala uniknąć potencjalnej degradacji jakości dźwięku.
  2. auto_channels „no”
    • Opis: Wyłącza automatyczne dostosowanie liczby kanałów (mono/stereo).
    • Efekt: Jeśli plik audio jest mono (1 kanał), MPD nie będzie automatycznie przekształcać go w stereo (2 kanały) lub odwrotnie. Wysyłane dane zachowają oryginalną liczbę kanałów.
    • Zastosowanie: Ważne, jeśli chcesz uniknąć niepotrzebnych zmian w danych audio, które mogą wpłynąć na jakość odtwarzania.
  3. auto_format „no”
    • Opis: Wyłącza automatyczne dostosowanie formatu danych (bit-depth i częstotliwości próbkowania) do urządzenia.
    • Efekt: MPD będzie wysyłać dane w oryginalnym formacie (np. 16-bit/44.1 kHz), bez konwersji do innego formatu akceptowanego przez DAC.
    • Zastosowanie: Przydatne w konfiguracjach, gdzie DAC wymaga danych w specyficznym formacie, aby uniknąć utraty jakości.

Optymalne ustawienia dla DAC SA9023 + ES9018K2M

mpd.conf
audio_output {
        type "alsa"
        name "TILEAR D2-MINI"
        device "hw:5,0"
        format "44100:16:2"
        mixer_type      "none"
        auto_resample   "no"
        auto_channels   "no"
        auto_format     "yes"
}

Dlaczego ustawienia 44,1 kHz i 16 bit skoro DAC jest w stanie otworzyć pliki z parametrami 96 kHz i 24 bit? Standardowa płyta Audio-CD (Red Book) jest zapisywana w formacie 44,1 kHz i 16 bit. Aby uniknąć przekłamań pliki flac powinny być tworzone w takim samym formacie. Tym samym odtwarzanie również aby uniknąć przekłamań.

Podnosząc sztucznie parametry wymusimy resampling nie uzyskując większej ilości danych. Zyskamy przekłamania informacji. Jeżeli jakimś cudem w naszej bibliotece z plikami flac znajdzie się plik o wyższych parametrach przykładowo 96 kHz i 24 bit co by wskazywało, że pochodzi z płyt danych np: DVD-Audio, SACD, Blu-ray Audio to w tym wypadku opcja auto_format „yes” załatwia sprawę.

Tu też mamy odpowiedź czy jest sens podłączania DAC o lepszych parametrach niż 96 kHz i 24 bit? Nie. Nie mamy dostępu do źródła do lepszych parametrach.

Aplikacje klienckie na Android

fedora/uslugi/mpd.txt · ostatnio zmienione: 2024/12/17 21:38 przez sindap

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki