MPD/Server

Achtung!

Dieser Artikel wird aktuell in Baustelle/MPD/Server überarbeitet. Daher kann es sein, dass diese Seite hier veraltete oder nicht (mehr) zutreffende Informationen enthält. Vergleiche beide Versionen und wende dich im Zweifelsfall mit deinem konkreten Anliegen an das Support-Forum. Änderungen am Artikel bitte nur in Baustelle/MPD/Server!

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte hilf mit, indem du diesen Artikel testest. Wiki/FAQ - häufig gestellte Fragen (Abschnitt „Wikiartikel-testen“).

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Dienste verwalten

  3. Ein Terminal bedienen

  4. Root-Rechte erlangen

  5. Einen Editor öffnen

  6. Rechte für Dateien und Ordner ändern

  7. Benutzer und Gruppen verwalten

Inhaltsverzeichnis
  1. Installation
  2. Benutzung
  3. Konfiguration
    1. Konfigurationsdatei erstellen
    2. Verzeichnisse
    3. Sound-Ausgabe
    4. Netzwerk-Freigabe
    5. Logdateien
    6. Rechtevergabe
    7. Datenbank erzeugen
    8. Lautstärkeregelung
    9. Weitere Optionen
    10. Konfiguration abschließen
    11. Radiostreams abspielen
  4. Problembehebung
    1. Musiksammlung auf externem Datenträger
    2. Große Playlists
  5. Links

MPD/mpd.png Dieser Artikel beschreibt die Installation und Einrichtung des MPD-Servers. Eine Beschreibung des MPD-Konzeptes und eine Übersicht über verfügbaren Client-Programme findet man im Artikel MPD. Die Einrichtung auf der Benutzerebene, mit der die Einbindung mit PulseAudio wesentlich einfacher vonstatten geht, wird in MPD auf der Benutzerebene beschrieben.

Installation

Folgendes Paket muss installiert[1] werden:

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install mpd 

sudo aptitude install mpd 

Dieses Paket beinhaltet nur den MPD-Server. Ein Client-Programm muss noch lokal oder auf einem weiteren Rechner installiert werden.

Benutzung

Wie die meisten anderen Dienste bringt MPD ein Start/Stop-Skript mit. Dieses Skript lässt sich zum Kontrollieren des Dienstes nutzen[2]. In einem Terminal[3] werden folgende Befehle mit Root-Rechten[4] benutzt:

# Allgemein
sudo service mpd {start|start-create-db|stop|restart}
# Beispiel
sudo service mpd stop 

Konfiguration

Der MPD wird über die Konfigurationsdatei /etc/mpd.conf gesteuert. Diese Datei existiert schon vorkonfiguriert. Mit einem Editor [5] mit Root-Rechten [4] kann man MPD nun individuell einrichten. Im Folgenden werden wichtige Optionen aufgezeigt.

Konfigurationsdatei erstellen

Sollte die Konfigurationsdatei nach der Installation des MPD nicht korrekt vorhanden sein, kann man MPD durch debconf erneut aus einem Terminal [3] heraus konfigurieren lassen.

sudo dpkg-reconfigure -plow mpd 

Ist die Datei erstellt, kann man MPD über die /etc/mpd.conf nochmals von Hand konfigurieren.

Verzeichnisse

Am Anfang der Konfigurationsdatei werden die Verzeichnisse festgelegt, in denen MPD nach Musik und Playlisten sucht:

music_directory         "/var/lib/mpd/music"
playlist_directory      "/var/lib/mpd/playlists"

Hierbei ist zu beachten, dass MPD unter dem Benutzer mpd (Gruppe audio) läuft. Dieser oder die Gruppe audio müssen auf die Verzeichnisse lesend zugreifen dürfen. Eventuell muss man daher die Dateirechte der angegebenen Verzeichnisse anpassen. Mehr zu diesem Thema findet man im Wiki unter Rechte. Kommentiert man die Zeile mit user komplett aus, wird der Dienst mit Root-Rechten gestartet.

In manchen fällen geschieht der Eintrag von Benutzer mpd in Gruppe audio nicht automatisch, in diesen Fällen läuft der MPD sauber an, kann aber keine Wiedergabe starten. In solch einem Fall muss der Eintrag von Hand vorgenommen werden.

sudo usermod -aG audio mpd     #Setzt die Gruppenzugehörigkeit
cat /etc/group | grep audio    #Zeigt Mitglieder der Gruppe audio an 

Sound-Ausgabe

MPD ist bei der Wiedergabe von Musik sehr flexibel. Es kann verschiedene Soundarchitekturen wie ALSA oder OSS nutzen sowie – falls im System vorhanden – unterschiedliche Soundkarten ansteuern. Zusätzlich kann MPD Streaming-Server wie Icecast2 oder auch einen integrierten http-Server zur Ausgabe verwenden. Für die verschiedenen Ausgabe-Möglichkeiten sind auskommentierte Standard-Einstellungen in der Konfiguration-Datei vorhanden, die man jeweils nur einkommentieren muss.

Da der Benutzer mpd Mitglied der Gruppe audio ist (überprüfen mit id mpd), sollte er alle Möglichkeiten der Sound-Ausgabe nutzen können.

Alsa

Die Ausgabe über die Alsa-Soundkarte ist voreingestellt. Wird sie nicht gewünscht, muss man den Bereich auskommentieren.

Im folgenden Beispiel wird der Sound an die zweite im System befindliche Soundkarte via ALSA geschickt:

# use this if you want to use ALSA audio output
audio_output {
       type            "alsa"
       name            "Soundkarte"
       device          "hw:0,1" # optional
       format          "44100:16:2" #optional
}

PulseAudio

Der erweiterte Soundserver PulseAudio ist standardmäßig ab Ubuntu 8.04 im Einsatz. Die passenden Zeilen dafür sehen wie folgt aus:

audio_output {
        type    "pulse"
        name    "MPD PulseAudio Ausgabe"
        server  "localhost"   # optional
        #sink    "alsa_output" # optional
}

Der server muss ggf. localhost sein, ansonsten taucht die mpd-Ausgabe nicht in den Audio-Einstellungen auf, und mpd blockiert die Soundkarte für andere Anwendungen, zudem kann andersherum mpd nichts ausgeben, wenn andere Sound-Anwendungen laufen.

sink ist der Wert für die PulseAudio-Standard-Ausgabe und wird automatisch ermittelt, wenn man ihn nicht angibt. Gibt man dennoch einen Wert an, muss dieser auch korrekt ermittelt sein, sonst erhält man folgende Fehlermeldung:

Cannot connect to server in PulseAudio output "MPD PulseAudio Ausgabe" (attempt 1): No such entity

Daher sollte man den Wert mit folgendem Befehl ermitteln:

pactl stat 

Dabei kann zum Beispiel Folgendes herauskommen:

Standard-Ausgabe: alsa_output.pci_8086_27d8_sound_card_0_alsa_playback_0

Demnach muss der Wert angepasst werden:

sink    "alsa_output.pci_8086_27d8_sound_card_0_alsa_playback_0" # optional

Hinweis:

Ggf. ist es für die Nutzung mit PulseAudio allerdings sinnvoller - zudem einfacher zu konfigurieren - MPD auf der Benutzerebene zu verwenden, da auch PulseAudio als Benutzerdienst konzipiert ist. Die Verwendung als Streamimgserver etc. ist damit genauso möglich wie hier beschrieben.

Jack

Ein Anschluss für den Soundserver JACK lässt sich leicht erstellen (wobei der Name frei gewählt werden kann):

audio_output {
       type            "jack"
       name            "mpdjack"
}

Die Angaben zu device und format werden nicht hier, sondern in den Einstellungen von JACK vorgenommen.

Eingebauter Webserver

MPD verfügt über einen eingebauten Webserver (http), der zur Soundausgabe genutzt werden kann. Man muss beachten, dass man die Qualität des Streams entweder als Qualitäts-Stufe oder als Bitrate, niemals aber beides, angibt.

audio_output {
	type		"httpd"
	name		"MPD HTTP Stream"
	encoder		"vorbis"		# optional, vorbis oder lame
	port		"8000"
	quality		"5.0"			# entweder
#	bitrate		"128"			# oder
	format		"44100:16:1"
}

Mit diesen Einstellungen ist der Stream über die Adresse http://HOSTNAME:8000 bzw. http://IP:8000 abrufbar.

Streamingserver

Mit MPD kann man auch gängige Streamingserver „bestreamen“, die Einstellungen für den Icecast2-Server sind in der Datei /etc/mpd.conf schon vorkonfiguriert, jedoch noch auskommentiert.

audio_output {
        type                    "shout"
        name                    "Name des Radiosenders"
        host                    "localhost"
        port                    "8000"
        mount                   "/stream"                   # nur bei Icecast
        password                "hackme"
        quality                 "5.0"                       # oder: bitrate "128"
        format                  "44100:16:2"
        user                    "source"                    # nur bei Icecast
        description             "Beschreibung der Sendung"  # optional
        genre                   "jazz"                      # optional
        public                  "no"                        # optional
}

Die Optionen ergeben sich zum größten Teil aus der Konfigurationsdatei des Streamingsservers, in diesem Fall vom Icecast2. Damit der MPD sich mit dem Icecast-Server verbindet muss der MPD etwas abspielen, steht der MPD still, besteht auch keine Verbindung. Zum Steuern des MPD über einen Client auf dem selben Rechner muss wie oben beschrieben mindestens eine Soundkarte definiert sein.

Netzwerk-Freigabe

Nach der Installation ist MPD so konfiguriert, dass man ihn nur vom localhost – also vom lokalen Rechner – aus ansprechen kann. Da einer der Hauptgründe für den Einsatz eines Musikservers normalerweise die Möglichkeit der Steuerung über das Netzwerk ist, sollte diese Bindung aufgehoben werden, so dass alle Rechner aus dem lokalen Netzwerk MPD ansprechen können:

# Set this value if you only have one
# address you want to allow connection to.
# bind_to_address        "localhost"

Port definieren

Nun lässt sich auch noch der Port festlegen, an dem MPD nach Anfragen aus dem Netzwerk lauschen soll – üblicherweise ist hier allerdings die Voreinstellung ausreichend. Bei Bedarf kann man ihn aber ändern über:

port   "6600"

Logdateien

Möchte man wissen, was der MPD-Server macht oder hat man Probleme, sich zu verbinden oder Musik abzuspielen, kann man MPD Logdateien schreiben lassen. (Direkt nach der Installation ist diese Funktion deaktiviert.)

# Valid options are "default", "secure" or "verbose".
log_level              "verbose"

Die Logs findet man anschließend im Verzeichnis /var/log/mpd/. Weitere Informationen bezüglich Logs findet man im Wiki unter Logdateien.

Rechtevergabe

Interessant ist noch die Option password. Sie ist nicht nur ein Passwort, um den Daemon zu schützen, sondern man kann password mehrmals definieren, um so mehrere Benutzer mit unterschiedlichen Rechten anzulegen. Die Syntax lautet:

Password "passwort@permissions"

Als permissions kann man eine kommagetrennte Liste aus read, add, control und/oder admin notieren, also zum Beispiel:

Password "geheim@read,control"

Wenn man sich nun mit dem Passwort geheim am MPD anmeldet, hat man das Recht, die Datenbank zu lesen und den MPD zu kontrollieren. Das Attribut add erlaubt, Stücke zur Datenbank hinzuzufügen und der admin hat das Recht, den Daemon zu beenden.

Datenbank erzeugen

Hinweis:

Ein manuelles anlegen der Datenbank mittels start-create-db ist in neueren Versionen nicht mehr möglich und liefert einen vermeintlichen Syntax Fehler.

Um die Datenbank automatisch aktualisieren zu lassen, finden sich folgende Einstellungen in der Konfigurationsdatei:

auto_update    "yes"
auto_update_depth "3"  # optional

follow_outside_symlinks	"yes"  # optional
follow_inside_symlinks	"yes"  # optional

Alternativ kann im Client eine Aktualisierung der Datenbank gestartet werden. Allerdings unterstützt nicht jeder Client diese Funktion.

Lautstärkeregelung

In der Konfigurationsdatei finden sich verschiedene Einstellungsmöglichkeiten, um dem Client eine Regelung der Lautstärke zu ermöglichen:

mixer_type	"software"    # hardware/software/disabled

Weitere Optionen

Weitere mögliche Optionen sind in der Datei /usr/share/doc/mpd/examples/mpdconf.example.gz sehr ausführlich dokumentiert.

Konfiguration abschließen

Nachdem man MPD an die eigenen Bedürfnisse angepasst hat, muss man MPD seine Konfiguration neu einlesen lassen:

sudo service mpd restart 

Radiostreams abspielen

Um Radiostreams mittels MPD abzuspielen, legt man im Playlistverzeichnis eine neue Datei namens Radiosender.m3u an und schreibt pro Zeile eine Streamadresse. Stationsübersichten finden finden sich im Artikel Internetradio/Stationen und Internetradio/Internetradio-Stationen. Kennt man von einem gewünschten Radiosender nicht die direkte Streamadresse, sondern nur den Link auf einen .m3u-Container, kann man diesen einfach im Playlistverzeichnis ablegen. Beispielsweise kann der Sender WDR 5 mittels Terminal wie folgt hinzugefügt werden:

cd ~/.mpd/playlists
wget http://www.wdr.de/wdrlive/media/wdr5.m3u 

Über den Playlistordner können nun die Streams von den Clients ausgewählt und abgespielt werden.

Problembehebung

Musiksammlung auf externem Datenträger

Liegt die Musiksammlung auf einem externen Datenträger, muss sichergestellt werden, dass der Benutzer mpd darauf zugreifen darf. Dazu bindet man den Datenträger über die fstab ein. Da es sich bei externen Datenträgern häufig um FAT- oder NTFS- Partitionen handelt, sei hier besonders auf den Artikel Windows-Partitionen einbinden hingewiesen. Der Benutzer mpd muss anschließend der Gruppe plugdev hinzugefügt werden.[7]

Große Playlists

Wer seine komplette Sammlung in einer Playlist zusammenfassen möchte, um daraus z.B. eine Zufallswiedergabe zu starten, muss ggf. die Werte für die Maximalgröße der Liste verändern. Standardmäßig kann MPD Listen mit bis zu 16384 (entspricht 214) Einträgen verarbeiten. In der mpd.conf-Datei kann der Wert aber heraufgesetzt werden, möglichst in weiteren 2er-Potenzen, z.B.

max_playlist_length		"131072"

Allerdings können nicht alle Clients damit umgehen!