Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
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.
Folgendes Paket muss installiert[1] werden:
mpd (universe)
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.
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
start
: Startet den MPD Dienst
stop
: Stoppt den Server wieder
restart
: Startet den Server neu, bestehende Verbindungen auf den Server werden gekappt
start-create-db
: Erzeugt die Datenbank. Dieser Befehl ist in neueren MPD-Server-Versionen nicht mehr verfügbar und liefert einen Syntaxfehler.
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.
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.
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
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.
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 }
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
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.
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.
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.
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.
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"
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"
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.
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.
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
auto_update: Regelt, ob die Datenbank automatisch vom Server aktualisiert werden soll
auto_update_depth: Regelt, wie tief die Ordnerstruktur durchsucht werden soll. Kommentiert man die Zeile aus, werden alle Ordner durchsucht
follow_outside_symlinks: Symbolische Links werden auch außerhalb der freigegeben Ordner verfolgt
follow_inside_symlinks: Symbolischen Links werden auch innerhalb der freigegeben Ordner verfolgt
Alternativ kann im Client eine Aktualisierung der Datenbank gestartet werden. Allerdings unterstützt nicht jeder Client diese Funktion.
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 mögliche Optionen sind in der Datei /usr/share/doc/mpd/examples/mpdconf.example.gz sehr ausführlich dokumentiert.
Nachdem man MPD an die eigenen Bedürfnisse angepasst hat, muss man MPD seine Konfiguration neu einlesen lassen:
sudo service mpd restart
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.
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]
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!
MPD mit Unterstützung für Lame bauen – Blogeintrag 01/2011
MPD im Userspace , detaillierte Anleitung, mpd mit PulseAudio-Integration als Benutzer zu verwenden, getestet unter 12.04.
Musik verwalten Übersichtsartikel
Diese Revision wurde am 10. November 2016 23:31 von noisefloor erstellt.