staging.inyokaproject.org

Server

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


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

MPD/mpd.png Wie im Artikel MPD beschrieben ist die Software nach dem Client-Server Prinzip aufgebaut. Der Server stellt die Audiodateien bereit, die dann von den Clients abgespielt werden können.

Die Einrichtung auf der Benutzerebene, mit der die Einbindung mit PulseAudio wesentlich einfacher vonstatten geht, wird in MPD auf der Benutzerebene beschrieben.

Installation

Für den MPD Server muss das folgenden Paket installiert[1] werden:

  • mpd (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install mpd 

Oder mit apturl installieren, Link: apt://mpd

Ein Client-Programm muss noch separat lokal oder auf einem weiteren Rechner installiert werden.

Konfiguration

Der MPD wird über die zentrale Konfigurationsdatei /etc/mpd.conf konfiguriert. Diese Datei existiert schon und ist vorkonfiguriert. Mit einem Editor[4] mit Root-Rechten[5] kann man MPD nun individuell einrichten.

Die Daten für die Einstellung sind als Schlüssel-Werte Paare hinterlegt, wobei Schlüssel und Wert durch (mindestens) ein Leerzeichen oder Tabulator getrennt sein müssen und der Wert muss in Anführungszeichen eingeschlossen sein. Beispiel:

music_directory "/var/lib/mpd/music"

Viele Optionen sind in der Konfigurationsdatei schon aufgeführt, allerdings über das Rautezeichen # am Anfang der Zeile auskommentiert. Entfernt man die Raute, wird die entsprechende Zeile aktiv, nachdem der Server neu gestartet wurde.

Im Folgenden werden einige (wichtige) Optionen aufgezeigt. Die Datei ist aber auch ausführliche (in Englisch) kommentiert, und auch die Manpage mpd.conf erläutert alle mögichen Optionen.

Verzeichnisse für Audiodateien

MPD verwendetet standardmäßig die folgenden Einstellung für Verzeichnisse für Audiodateien und Playlisten:

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.

Sound-Ausgabe

MPD ist bei der Wiedergabe von Musik sehr flexibel. Es kann verschiedene Soundarchitekturen nutzen sowie – falls im System vorhanden – unterschiedliche Soundkarten ansteuern. Standardmäßig wird die ALSA Schnittstelle genutzt

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"

Die Option bind_to_address kann mehrfach angegeben werden, so dass der MPD-Server an mehrere IP-Adressen gebunden werden kann.

Port definieren

Es lässt auch 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.

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
  • hardware: Lautstärke wird über die Hardware der Soundkarte geregelt. Damit ändert sich für alle Soundausgaben die Lautstärke. Funktioniert nicht mit jeder Soundkarte

  • software: Lautstärke wird softwaremäßig nur für die Ausgabe des MPD-Servers geregelt

  • disabled: Lautstärkeregelung über MPD-Client soll nicht möglich sein

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:

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

Benutzung

Der Server wird nach der Installation und bei jedem Systemstart über eine systemd Unit automatisch gestartet. Im laufenden Betrieb kann der Server mit den folgenden Befehlen kontrolliert werden[2]:

# Allgemein
sudo service mpd {start|stop|restart}
# Beispiel
sudo service mpd stop 
  • start: Startet den MPD Dienst

  • stop: Stoppt den Server wieder

  • restart: Startet den Server neu, bestehende Verbindungen auf den Server werden gekappt

Problem und Lösung

Konfigurationsdatein mpd.conf nicht vorhanden

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

sudo dpkg-reconfigure -plow mpd 

Hat man den Befehl ausgeführt, muss MPD über die /etc/mpd.conf nochmals von Hand konfiguriert werden.

Server läuft, aber keine Soundwiedergabe

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 

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!

Diese Revision wurde am 1. April 2022 22:13 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Multimedia, Streaming