Benutzer:Runiq
[[[Category:Anwendungen]] [[[Category:Multimedia]] [[[Category:Server]] [[[Category:Sound]] Dieser Artikel oder Artikelabschnitt ist noch nicht vollständig!
MPD ist ein Audio-Player mit einer Server-Struktur. Er läuft im Hintergrund als Daemon, besitzt eine Playlistverwaltung und eine Musik-Datenbank.
Installation
Das Programm ist als
mpd
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Konfiguration
MPD kann systemweit (Einstellungen betreffen alle Nutzer) oder mit Userrechten (Einstellungen werden vom jeweiligen Nutzer übernommen) gestartet werden. Es ist also auch möglich, mehrere Instanzen des Daemons laufen zu haben. Je nach Einsatzgebiet bietet sich die eine oder die andere Variante an. Auf einem Desktop-System macht sich die Nutzer-Version besser.
Damit MPD Ton ausgeben kann, muss entweder ALSA oder OSS installiert und funktionsfähig sein, wahlweise auch Pulseaudio.
MPD wird über die Datei mpd.conf
konfiguriert (man 5 mpd.conf
). Der Speicherort dieser Datei hängt ebenfalls davon ab, ob MPD als Systemdienst oder mit Nutzerrechten konfiguriert wird (mehr dazu unten). Die wichtigsten Einstellungen sind:
music_directory
- Speicherordner für Musikdateiendb_file
– Pfad zu MPD-eigenen Musikdatenbanklog_file
– Logdatei des Daemonsplaylist_directory
– Speicherordner für Playlistspid_file
– Datei, in der MPD seine Prozess-ID speichertaudio_output
– Einstellungen für Tonausgabestate_file
– "Zustand" von MPD (Playlist, Lied, Position im Lied, etc.)sticker_file
- "Sticker"-Datenbank (wo Clients Informationen über Lieder speichern)
Hinweis: Die Dateien müssen bereits existieren und die korrekten Rechte haben, wenn MPD gestartet wird. Fehler in der Konfiguration wird MPD mit einem Abbruch und einer Fehlermeldung quittieren.
Systemweiter Start
Die Standard-Konfiguration von MPD (zu finden unter /usr/share/doc/mpd.conf.example
) sieht einen systemweiten Start von MPD vor. Die Konfigurationsdatei liegt für diesen Fall unter /etc/mpd.conf
. Die Pfade zu den oben erwähnten Dateien zeigen alle auf verschiedene Unterverzeichnisse von /var/lib/mpd
und benutzen mpd als User. Da /var/lib/mpd
jedoch standardmäßig root gehört, muss MPD zunächst Schreibrechte für dieses Verzeichnis erhalten:
# chown -R mpd /var/lib/mpd
Musikverzeichnis
Die Einstellung music_directory
in /etc/mpd.conf
muss auf das Musikverzeichnis zeigen:
/etc/mpd.conf
music_directory /pfad/zum/musikverzeichnis
Hinweis: MPD muss Ausführungsrechte (+x
) in allen Elternverzeichnissen des Musikverzeichisses haben.
Das Musikverzeichnis muss von MPD gelesen werden können. Wenn es außerhalb von /var/lib/mpd
liegt, ist das jedoch häufig nicht der Fall. Um dies zu umgehen, kann man das Musikverzeichnis neu an einen Ort mounten, den der mpd-User sehen kann, in diesem Fall /var/lib/mpd/music
:
# mkdir /var/lib/mpd/music # mount -o bind /pfad/zum/musikverzeichnis /var/lib/mpd/music
Dies kann man auch in die /etc/fstab
eintragen, damit das Verzeichnis gleich bei Systemstart gemountet wird:
/etc/fstab
/pfad/zum/musikverzeichnis /var/lib/mpd/music none bind
Eine andere Möglichkeit ist, einen symbolischen Link in das Musikverzeichnis zu legen:
# mkdir /var/lib/mpd/music # ln -s /pfad/zum/musikverzeichnis /var/lib/mpd/music/
Bei dieser Lösung müssen die Rechte der Musikdateien so angepasst werden, dass MPD sie lesen kann. Außerdem muss die follow_outside_symlinks
-Option für MPD gesetzt sein:
/etc/mpd.conf
follow_outside_symlinks yes
Für den Fall, dass die Musiksammlung über mehrere Ordner verteilt ist (beispielsweise bei mehreren Usern, die ihre Sammlungen zusammenlegen wollen), können beide Lösungen benutzt werden: Entweder man mountet die Sammlungen in Unterordner des Musikverzeichnisses, oder man legt mehrere symbolische Links an.
MPD starten
MPD kann über den Systemd-Dienst mpd.service
kontrolliert werden. Der erste Start des Daemons kann eine Weile dauern, da MPD zunächst das Musikverzeichnis scannt und die gefundenen Dateien in seine interne Datenbank einträgt.
Man sollte nun den Daemon kurz testen, indem man einen entsprechenden Client aufruft (beispielsweise mpd oder ncmpc). Wenn dieser Client sich erfolgreich mit MPD verbunden hat, kann man die Tonausgabe konfigurieren.
Tonausgabe konfigurieren
Die standardmäßig mitgelieferte /usr/share/doc/mpd.conf.example
stellt einige Standardprofile zur Tonausgabe bereit. In diesem Abschnitt soll nur auf ALSA und PulseAudio eingegangen werden.
ALSA-Benutzer benötigen folgendes audio_output
-Profil:
/etc/mpd.conf
audio_output { type "alsa" name "ALSA-Ausgabe" }
Achtung: MPD muss Zugriff auf das Audio-Ausgabegerät in /dev/snd
haben. Wenn nicht, können Fehler wie [alsa]: Failed to open ALSA device "default": No such file or directory
oder player_thread: problems opening audio device while playing "Song Name.mp3"
auftreten. Um dies zu umgehen, muss der mpd-User der Gruppe audio hinzugefügt werden: gpasswd -a mpd audio
Das Profil für PulseAudio-Nutzer sieht ganz ähnlich aus:
/etc/mpd.conf
audio_output { type "pulse" name "PulseAudio-Ausgabe" }
PulseAudio selbst unterstützt eine Menge verschiedener Ausgabeoperationen, von denen viele analog zu denen von MPD selbst sind; beispielsweise kann die Ausgabe auf einen anderen Computer umgeleitet werden. Wie dies zu bewerkstelligen ist, kann man im MPD Community Wiki selbst nachlesen.
Achtung: Benutzer von PulseAudio, die MPD als Systemdienst benutzen möchten, müssen einen Workaround benutzen, damit der Systemdienst MPD mit dem Nutzerdienst PulseAudio funktioniert.
ALSA, OSS und PulseAudio unterstützen außerdem den mixer_type
-Parameter für die audio_output
-Variable, über die angegeben wird, wie die Lautstärke von MPD geregelt wird: software
regelt sie unabhängig von anderen Programmen, hardware
regelt die Lautstärke direkt auf der Soundkarte selbst.
/etc/mpd.conf
mixer_type "software"
Ablauf des MPD-Starts
Ein Start von MPD als Systemdienst läuft folgendermaßen ab:
- MPD wird von systemd mit Superuser-Rechten gestartet und liest seine Konfigurationsdatei
/etc/mpd.conf
. - MPD weiß jetzt, als welcher User er laufen soll, und wechselt entsprechend seine Berechtigungen.
- MPD konfiguriert sich gemäß den übrigen Angaben in seiner Konfigurationsdatei.
Durch diese Rechteänderung werden Tilden in den Konfigurationsdateien (~
) auf das Heimatverzeichnis des Users zeigen, als der MPD laufen soll, und nicht auf das Heimatverzeichnis von root. Um Missverständnissen vorzubeugen, empfiehlt es sich, stattdessen die Pfade auszuschreiben (/home/user
statt ~
).
MPD als Nutzer
Anstatt einen MPD systemweit laufen zu lassen, kann man den Daemon auch so konfigurieren, dass man ihn als Nutzer aufruft. Dies hat folgende Vorteile:
- Weniger Rechteprobleme: MPD kann auf dieselben Verzeichnisse und Dateien zugreifen, auf die man auch als Nutzer Zugriff hat.
- Keine Probleme mit der Kommunikation zwischen System-PulseAudio und Nutzer-Pulseaudio.
Die Konfigurationsdatei befindet sich in diesem Fall unter $XDG_CONFIG_HOME/mpd/mpd.conf
bzw. ~/.config/mpd/mpd.conf
, wahlweise auch unter ~/.mpdconf
oder ~/.mpd/mpd.conf
. Entsprechend der XDG Base Directory Specification bietet es sich an, die anderen Dateien in die entsprechenden Verzeichnisse zu legen:
$XDG_CONFIG_HOME/mpd/mpd.conf
db_file "~/.local/share/mpd/db" log_file "~/.local/share/mpd/log" sticker_file "~/.local/share/mpd/sticker" pid_file "~/.cache/mpd/pid" state_file "~/.cache/mpd/state" music_directory "~/musik" playlist_directory "~/playlists"
Die entsprechenden Verzeichnisse und Dateien müssen noch erzeugt werden:
$ mkdir -p ~/.{config,local/share/}mpd $ touch ~/.local/share/{db,log,sticker} ~/.cache/mpd/{pid,state}