Benutzer:Runiq

Aus wiki.archlinux.de

[[[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.

pacman -S mpd

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 Musikdateien
  • db_file – Pfad zu MPD-eigenen Musikdatenbank
  • log_file – Logdatei des Daemons
  • playlist_directory – Speicherordner für Playlists
  • pid_file – Datei, in der MPD seine Prozess-ID speichert
  • audio_output – Einstellungen für Tonausgabe
  • state_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:

  1. MPD wird von systemd mit Superuser-Rechten gestartet und liest seine Konfigurationsdatei /etc/mpd.conf.
  2. MPD weiß jetzt, als welcher User er laufen soll, und wechselt entsprechend seine Berechtigungen.
  3. 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}