[[Vorlage(Getestet, bionic, Focal Fossa)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Dienste: Dienste verwalten] [:mit Root-Rechten arbeiten:] [:Editor: Einen Editor öffnen] [:Terminal:einen Terminal öffnen:] }}} [[Inhaltsverzeichnis(1)]] [[Bild(MPD/mpd.png, 64, left)]] 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/MPD_auf_der_Benutzerebene:MPD auf der Benutzerebene] beschrieben. = Installation = Für den MPD Server muss das folgenden Paket installiert[1] werden: {{{#!vorlage Paketinstallation mpd, universe }}} Ein [:MPD#Clients: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 [man: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: {{{#!vorlage Befehl 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 }}} {{{#!vorlage Hinweis Ggf. ist es für die Nutzung mit PulseAudio allerdings sinnvoller - zudem einfacher zu konfigurieren - [:MPD/MPD_auf_der_Benutzerebene: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: {{{#!vorlage Befehl 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/Units:systemd Unit] automatisch gestartet. Im laufenden Betrieb kann der Server mit den folgenden Befehlen kontrolliert werden[2]: {{{#!vorlage Befehl # 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 [#konfiguration Konfigurationsdatei] nach der Installation des MPD nicht korrekt vorhanden sein, kann man MPD durch `debconf` erneut aus einem Terminal[3][5] heraus konfigurieren lassen. {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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 2^^(~-(14)-~)^^) 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! = Links = * [https://www.musicpd.org/ Homepage] {en} * [https://mpd.fandom.com/wiki/Music_Player_Daemon_Wiki Offizielles Wiki] {en} * [:Musik_verwalten:] {Übersicht} Übersichtsartikel # tag: Multimedia, Netzwerk, Streaming