Benutzer:Runiq: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Runiq (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Runiq (Diskussion | Beiträge)
Entwurf für den MPD-Artikel
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[[Category:Anwendungen]]
[[[Category:Multimedia]]
[[[Category:Server]]
[[[Category:Sound]]
{{unvollständig}}
{{unvollständig}}
{{righttoc}}
{{righttoc}}
Zeile 6: Zeile 10:


== Konfiguration ==
== 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.  
MPD kann mit Systemrechten (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]].
Damit MPD Ton ausgeben kann, muss entweder [[ALSA]] oder [[OSS]] installiert und funktionsfähig sein, wahlweise auch [[Pulseaudio]].


MPD wird über die Datei {{ic|mpd.conf}} konfiguriert ({{ic|man 5 mpd.conf}}). Der Speicherort dieser Datei hängt ebenfalls davon ab, ob MPD mit System- oder mit Nutzerrechten konfiguriert wird (mehr dazu unten). Die wichtigsten Einstellungen in dieser Datei sind:
MPD wird über die Datei {{ic|mpd.conf}} konfiguriert ({{ic|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:


* {{ic|music_directory}} - Speicherordner für Musikdateien
* {{ic|db_file}} – Pfad zu MPD-eigenen Musikdatenbank
* {{ic|log_file}} – Logdatei des Daemons
* {{ic|playlist_directory}} – Speicherordner für Playlists
* {{ic|pid_file}} – Datei, in der MPD seine Prozess-ID speichert
* {{ic|pid_file}} – Datei, in der MPD seine Prozess-ID speichert
* {{ic|db_file}} – MPDs Musikdatenbank
* {{ic|audio_output}} – Einstellungen für Tonausgabe
* {{ic|log_file}} – Logdatei des Daemons
* {{ic|state_file}} – "Zustand" von MPD (Playlist, Lied, Position im Lied, etc.)
* {{ic|state_file}} – "Zustand" von MPD (Playlist, Lied, Position im Lied, etc.)
* {{ic|playlist_directory}} – Speicherordner für Playlists
* {{ic|music_directory}} - Speicherordner für Musikdateien
* {{ic|sticker_file}} - "Sticker"-Datenbank (wo Clients Informationen über Lieder speichern)
* {{ic|sticker_file}} - "Sticker"-Datenbank (wo Clients Informationen über Lieder speichern)


{{Note|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.}}
{{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.}}


Bevor man mpd startet, muss man die Konfiguration bearbeiten. Diese befindet sich unter {{ic|/usr/share/mpd/mpd.conf.example}}.
=== Systemweiter Start ===
Die Standard-Konfiguration von MPD (zu finden unter {{ic|/usr/share/doc/mpd.conf.example}}) sieht einen systemweiten Start von MPD vor. Die Konfigurationsdatei liegt für diesen Fall unter {{ic|/etc/mpd.conf}}. Die Pfade zu den oben erwähnten Dateien zeigen alle auf verschiedene Unterverzeichnisse von {{ic|/var/lib/mpd}} und benutzen ''mpd'' als User. Da {{ic|/var/lib/mpd}} jedoch standardmäßig ''root'' gehört, muss MPD zunächst Schreibrechte für dieses Verzeichnis erhalten:


Dies ist die Beispielkonfiguration, die man für systemweit gültige Einstellungen als /etc/mpd.conf speichern muss. Sollen die Einstellungen nur für einen bestimmten User gelten, muss man die Datei in seinem home-Verzeichnis als {{ic|.mpdconf}} speichern.
{{bc|# chown -R mpd /var/lib/mpd}}


=== Tipps ===
==== Musikverzeichnis ====
Empfehlenswert ist es, mpd als User laufen zu lassen. Hierfür setzt man einfach seinen Benutzernamen in
Die Einstellung {{ic|music_directory}} in {{ic|/etc/mpd.conf}} muss auf das Musikverzeichnis zeigen:
die User-Variable.


user "username"
{{hc|/etc/mpd.conf|
music_directory /pfad/zum/musikverzeichnis
}}


Je nach Konfiguration ist es allerdings besser den MPD unter dem MPD-User "mpd" laufen zu lassen. Auf diese Weise umgeht man Berechtigungsprobleme bei einem MPD-Update.
{{Hinweis|MPD muss Ausführungsrechte ({{ic|+x}}) in ''allen'' Elternverzeichnissen des Musikverzeichisses haben.}}


Ratsam ist es in diesem Fall allerdings auch, das Musikverzeichnis für den Benutzer "mpd" und die Gruppe "audio" zu "chown'en". Auf diese Weise kann der User "mpd", sowie jeder User der Gruppe "audio" (sofern die Gruppenrechte auf mindestens "lesen" gesetzt wurden), auf das Verzeichnis zugreifen.
Das Musikverzeichnis muss von MPD gelesen werden können. Wenn es außerhalb von {{ic|/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 {{ic|/var/lib/mpd/music}}:


Benutzt man [[Alsa]], und will mpd auch über Alsa betreiben, kann man die Konfigurationsdatei so belassen wie sie momentan ist. Wenn man noch esd oder einen anderen Soundserver installiert hat, verkompliziert sich die Sache. Dann sollte  Alsa als Ausgabegerät angeben. Die nötigen Einstellungen sind:
{{bc|
# mkdir /var/lib/mpd/music
# mount -o bind /pfad/zum/musikverzeichnis /var/lib/mpd/music
}}


audio_output {
Dies kann man auch in die {{ic|/etc/fstab}} eintragen, damit das Verzeichnis gleich bei Systemstart gemountet wird:
        type                    "alsa"
        name                    "My ALSA Device"
        options                "dev=dmixer" # optional zum Mischen mehrerer Soundquellen mit dmix
        device                  "plug:dmix"  #
        #format                "44100:16:2" # optional
}
mixer_type                      "alsa"
mixer_device                    "dmix"
mixer_control                  "PCM"


=== Dolby Digital / DTS ===
{{hc|/etc/fstab|
{{Hinweis|Diese Konfigurationsmöglichkeit besitzt keine Soundmixingeigenschaften, was an ALSA liegt. Dem Autor ist keine Möglichkeit bekannt ALSA diese Eigenschaft bei dem AC-3-Output "beizubringen". Das Programm, welches einen AC-3 Stream erzeugt (z.B. MPD in diesem Fall), erzeugt/benötigt einen exklusiven Zugriff auf das Audio-Device. Zudem wird hierfür spezielle Hardware benötigt. Diejenigen die sie haben, wissen es …}}
/pfad/zum/musikverzeichnis  /var/lib/mpd/music none bind
}}


Möchte man, dass der MPD die Musik als Dolby-Digital-Stream (AC-3) abspielt, muss man wie folgt vorgehen:
Eine andere Möglichkeit ist, einen symbolischen Link in das Musikverzeichnis zu legen:


pacman -S alsa-plugins
{{bc|
# mkdir /var/lib/mpd/music
# ln -s /pfad/zum/musikverzeichnis /var/lib/mpd/music/
}}


Dies installiert das notwendige a52 Alsa-Plugin um einen AC-3-Stream zu erstellen.
Bei dieser Lösung müssen die Rechte der Musikdateien so angepasst werden, dass MPD sie lesen kann. Außerdem muss die {{ic|follow_outside_symlinks}}-Option für MPD gesetzt sein:


{{hc|~/.asoundrc oder /etc/asound.conf|pcm.a52encode {
{{hc|/etc/mpd.conf|
        type a52
follow_outside_symlinks yes
}
pcm.stereoupmix {
        type upmix
        slave.pcm "a52encode"
        channels 6
}
}}
}}


Dies stellt einmal die AC-3-Schnittstelle, und einmal ein Upmix-Device auf 6 Kanäle (5.1) bereit. Wer keine 5.1-Anlage hat (und AC-3 trotzdem nutzen will/kann) kann den stereoupmix weglassen (nicht getestet).
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.


Dann in der MPD-Konfigurationsdatei den Audio-Output auskommentieren und …
==== MPD starten ====


audio_output {
MPD kann über den Systemd-Dienst {{ic|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.
      type    "ao"
      driver  "alsa"
      options  "dev=stereoupmix"
      name    "AC3 Output"
      format  "48000:16:2"
}


… hinzufügen.
Man sollte nun den Daemon kurz testen, indem man einen entsprechenden Client aufruft (beispielsweise {{Paket|mpd}} oder {{Paket|ncmpc}}). Wenn dieser Client sich erfolgreich mit MPD verbunden hat, kann man die Tonausgabe konfigurieren.


Dann mpd neu starten
==== Tonausgabe konfigurieren ====


systemctl restart mpd
Die standardmäßig mitgelieferte {{ic|/usr/share/doc/mpd.conf.example}} stellt einige Standardprofile zur Tonausgabe bereit. In diesem Abschnitt soll nur auf ALSA und PulseAudio eingegangen werden.


Funktioniert hier etwas nicht, so kann es daran liegen, dass irgendein Programm die Soundkarte nutzt. Ist dies der Fall, funktioniert AC-3 nicht (siehe Hinweis), und umgekehrt.
ALSA-Benutzer benötigen folgendes {{ic|audio_output}}-Profil:


== Inbetriebnahme ==
{{hc|/etc/mpd.conf|
Um mpd mit Systemd (aktueller ArchLinux-Standard) zu starten, kann der Befehl systemctl verwendet werden:
audio_output {
  type "alsa"
  name "ALSA-Ausgabe"
}
}}


systemctl start mpd
{{Achtung|MPD muss Zugriff auf das Audio-Ausgabegerät in {{ic|/dev/snd}} haben. Wenn nicht, können Fehler wie {{ic|[alsa]: Failed to open ALSA device "default": No such file or directory}} oder {{ic|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: {{ic|gpasswd -a mpd audio}}
}}


Bei dem ersten Start von mpd wird eine Datenbank mit Informationen über die Musik im Musikverzeichnis, das in der Konfigurationsdatei angegeben wurde.
Das Profil für PulseAudio-Nutzer sieht ganz ähnlich aus:


Um mpd automatisch beim Systemstart zu laden, muss man den entsprechenden Service aktivieren:
{{hc|/etc/mpd.conf|
audio_output {
  type "pulse"
  name "PulseAudio-Ausgabe"
}
}}


systemctl enable mpd
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 [http://mpd.wikia.com/wiki/PulseAudio MPD Community Wiki] selbst nachlesen.


== Datenbankaktualisierung ==
{{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.}}
Die Datenbankaktualisierung funtkioniert beispielsweise über die Eingabe von {{ic|mpc update}} oder bei laufendem ncmpc standardmäßig über {{taste|Strg}} + {{taste|U}}. Der Befehl {{ic|mpd --update-db}} existiert seit 0.12 nicht mehr.


== Dateien/Ordner außerhalb des Musikverzeichnis hinzufügen ==
ALSA, OSS und PulseAudio unterstützen außerdem den {{ic|mixer_type}}-Parameter für die {{ic|audio_output}}-Variable, über die angegeben wird, wie die Lautstärke von MPD geregelt wird: {{ic|software}} regelt sie unabhängig von anderen Programmen, {{ic|hardware}} regelt die Lautstärke direkt auf der Soundkarte selbst.
Standardmäßig spielt mpd keine Dateien außerhalb des konfigurierten Pfades ab. Allerdings kann mpd Symlinks folgen. Dazu muss die Option {{ic|follow_outside_symlinks}} in der Konfigurationsdatei auf {{ic|yes}} gesetzt sein. Nun kann können beispielsweise externe Medien hinzugefügt werden:
   
ln -s /media /pfad/zu/meinem/musikordner/media


Es existieren [http://mpd.wikia.com/wiki/Hack:Mpc-play mehrere] {{sprache|en}} [https://github.com/Mic92/mpdtools Skripte] {{sprache|en}} um dies zu automatisieren.
{{hc|/etc/mpd.conf|
mixer_type "software"
}}


== Probleme ==
==== Ablauf des MPD-Starts ====


'''Problem''': Der Client überspringt Titel aus der Playlist
Ein Start von MPD als Systemdienst läuft folgendermaßen ab:


'''Lösung''': MPD das Charset des Dateisystem mitteilen. Dazu in die {{ic|/etc/mpd.conf}} (beispielsweise für UTF8 und damit Umlaute) {{ic|filesystem_charset "UTF-8"}} eintragen.
# MPD wird von systemd mit Superuser-Rechten gestartet und liest seine Konfigurationsdatei {{ic|/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.


'''Problem''': Der Server startet nicht, wenn er als anderer User als {{ic|mpd}} laufen soll.
Durch diese Rechteänderung werden Tilden in den Konfigurationsdateien ({{ic|~}}) 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 ({{ic|/home/user}} statt {{ic|~}}).


'''Lösung''': pid-file für den User schreibbar machen. Dazu wahlweise in der {{ic|/etc/mpd.conf}} den Wert {{ic|pid_file}} auf eine Datei setzen für die der User Schreibrechte besitzt oder in {{ic|/etc/rc.d/mpd}} die Zeile {{ic|<nowiki>[[ -d /run/mpd ]] || install -d -o mpd -g mpd /run/mpd</nowiki>}}
=== MPD als Nutzer ===
wie folgt anpassen: {{ic|<nowiki>[[ -d /run/mpd ]] || install -d -o ''Username'' -g ''Gruppenname'' /run/mpd</nowiki>}} Das Ändern der Rechte oder des Besitzers von {{ic|/var/run/mpd/}} ist keine dauerhafte Lösung, da diese Änderungen bei einem Reboot verloren gehen.


'''Problem''': Bei der Verwendung von Pulseaudio kann entweder der als eigener Server laufende MPD '''oder''' vom User verwendete Programme Sound erzeugen, aber niemals beide gleichzeitig.
Anstatt einen MPD systemweit laufen zu lassen, kann man den Daemon auch so konfigurieren, dass man ihn als Nutzer aufruft. Dies hat folgende Vorteile:


'''Lösung''': MPD unter dem selben User laufen lassen, der auch den Rechner selbst verwendet. Alternativ soll auch eine Möglichkeit bestehen, Pulseaudio so zu konfigurieren, dass mehrere Benutzer gleichzeitig Sound erzeugen können. Diese ist dem Autor jedoch nicht bekannt.
* 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.


== Clients ==
Die Konfigurationsdatei befindet sich in diesem Fall unter {{ic|$XDG_CONFIG_HOME/mpd/mpd.conf}} bzw. {{ic|~/.config/mpd/mpd.conf}}, wahlweise auch unter {{ic|~/.mpdconf}} oder {{ic|~/.mpd/mpd.conf}}. Entsprechend der [http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html XDG Base Directory Specification] bietet es sich an, die anderen Dateien in die entsprechenden Verzeichnisse zu legen:
{| {{prettytable}}
!Name
!Art
!Verfügbarkeit
!Website
|-
|mpc
|Konsole
|{{Paket|mpc|extra/mpc}}
|http://www.musicpd.org/mpc.shtml {{sprache|en}}
|-
|ncmpc
|Konsole
|{{Paket|mpc|extra/ncmpc}}
|http://hem.bredband.net/kaw/ncmpc/ {{sprache|en}}
|-
|ncmpcpp
|Konsole
|{{Paket|mpc|community/ncmpcpp}}
|http://unkart.ovh.org/ncmpcpp/ {{sprache|en}}
|-
|pms
|Konsole
|{{AUR|pms|pms}} im AUR
|http://pms.sourceforge.net/ {{sprache|en}}
|-
|gmpc
|Gnome-Client
|{{Paket|gmpc|community/gmpc}}
|http://sarine.nl/gmpc/ {{sprache|en}}
|-
|Ario
|GTK
|{{Paket|ario|community/ario}}
|http://ario-player.sourceforge.net/ {{sprache|en}}
|-
|pympd
|Python-Client
|{{Paket|pympd|community/pympd}}
|http://pympd.sourceforge.net/ {{sprache|en}}
|-
|Sonata
|GTK
|{{Paket|sonata|extra/sonata}}
|http://sonata.berlios.de/ {{sprache|en}}
|}


Eine Liste mit mehr Clienten findet man unter http://www.musicpd.org/clients.shtml {{sprache|en}}
{{hc|$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"
}}


== Weblinks ==
Die entsprechenden Verzeichnisse und Dateien müssen noch erzeugt werden:
* [http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki MPD Wiki] {{sprache|en}}


[[Kategorie:Multimedia]]
{{bc|
[[Kategorie:Services]]
$ mkdir -p ~/.{config,local/share/}mpd
 
$ touch ~/.local/share/{db,log,sticker} ~/.cache/mpd/{pid,state}
[[en:Music Player Daemon]]
}}
[[pl:Music Player Daemon]]
[[fr:MPD]]

Aktuelle Version vom 6. Januar 2014, 16:15 Uhr

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