Music Player Daemon: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Boenki (Diskussion | Beiträge)
alsa link angepasst
K Verschiebung community -> extra
 
(41 dazwischenliegende Versionen von 20 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{righttoc}}
MPD ist ein Audio-Player mit einer Server-Struktur. Er läuft im Hintergrund als Daemon, besitzt eine Playlistverwaltung und eine Musik-Datenbank.
MPD ist ein Audio-Player mit einer Server-Struktur. Er läuft im Hintergrund als Daemon, besitzt eine Playlistverwaltung und eine Musik-Datenbank.


== MPD Installation ==
{{Installation|repo=extra|paket=mpd}}


Installiere mpd
Anschließend erstellt man {{ic|~/.mpd}} und {{ic|~/.mpd/playlists}}


<pre>pacman -Sy mpd</pre>
mkdir ~/.mpd/
 
mkdir ~/.mpd/playlists
und erstelle ~/.mpd und ~/.mpd/playlists
<pre>mkdir ~/.mpd/
mkdir ~/.mpd/playlists</pre>


== Konfiguration ==
== Konfiguration ==
Bevor man mpd startet, muss man die Konfiguration bearbeiten. Diese befindet sich unter {{ic|/usr/share/doc/mpd/mpdconf.example}}.


Bevor du mpd startest musst die die Konfiguration bearbeiten. Diese befindet sich unter
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.
<pre>/etc/mpd.conf.example</pre>
 
Dies ist die Beispielkonfiguration, die du für Systemweit gültige Einstellungen als /etc/mpd.conf speichern musst.
Sollen die Einstellungen nur für einen bestimmten User gelten, musst Du die Datei in dessen home-Verzeichnis als .mpdconf speichern.  


=== Tipps ===
=== Tipps ===
Empfehlenswert ist es, mpd als User laufen zu lassen. Hierfür setzt man einfach seinen Benutzernamen in
die User-Variable.


Empfehlenswert ist es, mpd als User laufen zu lassen. Hierfür setze einfach deinen Benutzernamen in
user "username"
die User-Variable, wie z.B. bei mir
<pre>user           "niclas"</pre>


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.


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.
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.
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.


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:


Benutzt du [[Alsa]], und willst mpd auch über Alsa betreiben, so kannst du die Konfigurationsdatei so belassen wie sie momentan ist. Wenn du noch esd oder einen anderen Soundserver installiert hast, verkompliziert sich die Sache. Dann solltest du Alsa als Ausgabegerät angeben. Die nötigen Einstellungen sind:
audio_output {
<pre>
audio_output {
         type                    "alsa"
         type                    "alsa"
         name                    "My ALSA Device"
         name                    "My ALSA Device"
         device                  "dmixer"     # optional
        options                "dev=dmixer" # optional zum Mischen mehrerer Soundquellen mit dmix
         device                  "plug:dmix" #  
         #format                "44100:16:2" # optional
         #format                "44100:16:2" # optional
}
}
</pre>
mixer_type                      "alsa"
 
mixer_device                    "dmix"
<pre>
mixer_control                  "PCM"
mixer_type                      "alsa"
mixer_device                    "dmix"
mixer_control                  "PCM"
</pre>
 
Mehr Infos über dmix (bei Alsa für das Mischen mehrerer Soundquellen zuständig) findet man im [http://gentoo-wiki.com/HOWTO_ALSA_Complete_%28includes_dmix%29#MPD Gentoo-Wiki]


=== Dolby Digital / DTS ===
=== Dolby Digital / DTS ===
{{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 …}}


''Hierfür benötigt man spezielle Hardware. Diejenigen die sie haben, wissen es.''
Möchte man, dass der MPD die Musik als Dolby-Digital-Stream (AC-3) abspielt, muss man wie folgt vorgehen:


'''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.'''
pacman -S alsa-plugins


Möchte man, dass der MPD die Musik als Dolby Digital (AC-3) Stream abspielt, so muss man wie folgt vorgehen:
Dies installiert das notwendige a52 Alsa-Plugin um einen AC-3-Stream zu erstellen.


1. <pre> pacman -S alsa-plugins </pre>
{{hc|~/.asoundrc oder /etc/asound.conf|pcm.a52encode {
 
Dies installiert das notwendige a52 Alsa-Plugin um einen AC-3 Stream zu erstellen.
 
2. ''~/.asoundrc'' oder ''/etc/asound.conf'' setzen
<pre>
pcm.a52encode {
         type a52
         type a52
}
}
Zeile 68: Zeile 52:
         type upmix
         type upmix
         slave.pcm "a52encode"
         slave.pcm "a52encode"
         channels 6  
         channels 6
}
}
</pre>
}}
 
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).


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).
Dann in der MPD-Konfigurationsdatei den Audio-Output auskommentieren und


3. In der MPD Konfigurationsdatei den Audio-Output auskommentieren und
audio_output {
<pre>
audio_output {
       type    "ao"
       type    "ao"
       driver  "alsa"
       driver  "alsa"
Zeile 82: Zeile 66:
       name    "AC3 Output"
       name    "AC3 Output"
       format  "48000:16:2"
       format  "48000:16:2"
}
}
</pre>
 
… hinzufügen.


hinzufügen.
Dann mpd neu starten


4. Den MPD neustarten.
systemctl restart mpd
<pre> /etc/rc.d/mpd restart </pre>


Funktioniert hier etwas nicht, so kann es daran liegen, dass irgendein Programm die Soundkarte nutzt. Ist dies der Fall, so funktioniert AC-3 nicht (siehe Hinweis), und umgekehrt.
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.


== Inbetriebnahme ==
== Inbetriebnahme ==
Um mpd mit Systemd (aktueller ArchLinux-Standard) zu starten, kann der Befehl systemctl verwendet werden:
systemctl start mpd


Als erstes erzeugt man eine Datenbank. Hierbei sammelt mpd Informationen über die Musik die im (in der Konfig angegebenen) Musikverzeichnis
Bei dem ersten Start von mpd wird eine Datenbank mit Informationen über die Musik im Musikverzeichnis, das in der Konfigurationsdatei angegeben wurde.
<pre>
/etc/rc.d/mpd create-db
</pre>
Nun starten wir mpd.


<pre>
Um mpd automatisch beim Systemstart zu laden, muss man den entsprechenden Service aktivieren:
/etc/rc.d/mpd start
</pre>


Wenn du willst, dass mpd beim Systemstart geladen wird trage ihn einfach in der /etc/rc.conf als daemon ein.
systemctl enable mpd


== Datenbankaktualisierung ==
== Datenbankaktualisierung ==
Die Datenbankaktualisierung funktioniert 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 ==
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.
== Probleme ==


Die Datenbankaktualisierung funtkioniert beispielsweise so:
'''Problem''': Der Client überspringt Titel aus der Playlist


MPC:
'''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.


<pre>
'''Problem''': Der Server startet nicht, wenn er als anderer User als {{ic|mpd}} laufen soll.
mpc update
</pre>


und bei laufendem ncmpc standardmäßig über:
'''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>}}
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.


<pre>
'''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.
Strg+U
</pre>


Der Befehl ''mpd --update-db'' existiert seit 0.12 nicht mehr!
'''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.


== GUI/Client ==
'''Problem''': MP3 Dateien mit hoher Bitrate (320), gibt MPD unter Umständen nur verzerrt, oder verrauscht wieder.


Natürlich gibt es GUIs, bzw. Clienten für mpd.
'''Lösung''': MPD benutzt als Standard für die Wiedergabe von MP3-Dateien den mad-Dekoder. Abhilfe schafft ein Dekoderwechsel in der mpd.conf-Datei.
Einige sind z.B.


*[http://www.musicpd.org/mpc.shtml mpc] - Konsole
Beispiel :
*[http://hem.bredband.net/kaw/ncmpc/ ncmpc] - Konsole
*[http://sarine.nl/gmpc/ gmpc] - Gnome Client
*pympd - Ein Python Client. Unter http://pympd.sourceforge.net/ ,oder im [[AUR]], findet man ein PKGBUILD
*[http://sonata.berlios.de/ Sonata] - Ein Python GTK+ Client. Zu finden im Community Repo.


Eine Liste mit mehr Clienten findet man unter http://www.musicpd.org/clients.shtml
decoder {
    plugin "mad"
    enabled "no"
}
decoder {
  plugin "ffmpeg"
  enabled "yes"
}


== Links ==
== Clients ==
{| {{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|extra/ncmpcpp}}
|http://unkart.ovh.org/ncmpcpp/ {{sprache|en}}
|-
|pms
|Konsole
|''fehlt''
|http://pms.sourceforge.net/ {{sprache|en}}
|-
|gmpc
|Gnome-Client
|{{Paket|gmpc|extra/gmpc}}
|http://sarine.nl/gmpc/ {{sprache|en}}
|-
|Ario
|GTK
|{{Paket|ario|extra/ario}}
|http://ario-player.sourceforge.net/ {{sprache|en}}
|-
|pympd
|Python-Client
|{{Paket|pympd|extra/pympd}}
|http://pympd.sourceforge.net/ {{sprache|en}}
|-
|Sonata
|GTK
|{{Paket|sonata|extra/sonata}}
|http://sonata.berlios.de/ {{sprache|en}}
|-
|Cantata
|Qt
|{{Paket|cantata|extra/cantata}}
|http://code.google.com/p/cantata/ {{sprache|en}}
|}


http://www.musicpd.org/
Eine Liste mit mehr Clients findet man unter http://www.musicpd.org/clients.shtml {{sprache|en}}


http://mpd.wikia.com/wiki/
== Weblinks ==
* [https://www.musicpd.org/doc/html/user.html MPD User’s Manual] {{sprache|en}}


[[Kategorie:Multimedia]]
[[Kategorie:Multimedia]]
[[Kategorie:Daemons]]
[[Kategorie:Services]]
 
[[en:Music Player Daemon]]
[[pl:Music Player Daemon]]
[[fr:MPD]]

Aktuelle Version vom 24. Mai 2023, 18:15 Uhr

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

Anschließend erstellt man ~/.mpd und ~/.mpd/playlists

mkdir ~/.mpd/
mkdir ~/.mpd/playlists

Konfiguration

Bevor man mpd startet, muss man die Konfiguration bearbeiten. Diese befindet sich unter /usr/share/doc/mpd/mpdconf.example.

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 .mpdconf speichern.

Tipps

Empfehlenswert ist es, mpd als User laufen zu lassen. Hierfür setzt man einfach seinen Benutzernamen in die User-Variable.

user "username"

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.

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.

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:

audio_output {
       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

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 …

Möchte man, dass der MPD die Musik als Dolby-Digital-Stream (AC-3) abspielt, muss man wie folgt vorgehen:

pacman -S alsa-plugins

Dies installiert das notwendige a52 Alsa-Plugin um einen AC-3-Stream zu erstellen.

~/.asoundrc oder /etc/asound.conf
pcm.a52encode {
        type a52
}
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).

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

audio_output {
      type    "ao"
      driver  "alsa"
      options  "dev=stereoupmix"
      name    "AC3 Output"
      format  "48000:16:2"
}

… hinzufügen.

Dann mpd neu starten

systemctl restart mpd

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.

Inbetriebnahme

Um mpd mit Systemd (aktueller ArchLinux-Standard) zu starten, kann der Befehl systemctl verwendet werden:

systemctl start mpd

Bei dem ersten Start von mpd wird eine Datenbank mit Informationen über die Musik im Musikverzeichnis, das in der Konfigurationsdatei angegeben wurde.

Um mpd automatisch beim Systemstart zu laden, muss man den entsprechenden Service aktivieren:

systemctl enable mpd

Datenbankaktualisierung

Die Datenbankaktualisierung funktioniert beispielsweise über die Eingabe von mpc update oder bei laufendem ncmpc standardmäßig über Strg + U. Der Befehl mpd --update-db existiert seit 0.12 nicht mehr.

Dateien/Ordner außerhalb des Musikverzeichnis hinzufügen

Standardmäßig spielt mpd keine Dateien außerhalb des konfigurierten Pfades ab. Allerdings kann mpd Symlinks folgen. Dazu muss die Option follow_outside_symlinks in der Konfigurationsdatei auf yes gesetzt sein. Nun kann können beispielsweise externe Medien hinzugefügt werden:

ln -s /media /pfad/zu/meinem/musikordner/media

Es existieren mehrere Skripte um dies zu automatisieren.

Probleme

Problem: Der Client überspringt Titel aus der Playlist

Lösung: MPD das Charset des Dateisystem mitteilen. Dazu in die /etc/mpd.conf (beispielsweise für UTF8 und damit Umlaute) filesystem_charset "UTF-8" eintragen.

Problem: Der Server startet nicht, wenn er als anderer User als mpd laufen soll.

Lösung: pid-file für den User schreibbar machen. Dazu wahlweise in der /etc/mpd.conf den Wert pid_file auf eine Datei setzen für die der User Schreibrechte besitzt oder in /etc/rc.d/mpd die Zeile [[ -d /run/mpd ]] || install -d -o mpd -g mpd /run/mpd wie folgt anpassen: [[ -d /run/mpd ]] || install -d -o ''Username'' -g ''Gruppenname'' /run/mpd Das Ändern der Rechte oder des Besitzers von /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.

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.

Problem: MP3 Dateien mit hoher Bitrate (320), gibt MPD unter Umständen nur verzerrt, oder verrauscht wieder.

Lösung: MPD benutzt als Standard für die Wiedergabe von MP3-Dateien den mad-Dekoder. Abhilfe schafft ein Dekoderwechsel in der mpd.conf-Datei.

Beispiel :

decoder {

   plugin "mad"
   enabled "no"

} decoder {

  plugin "ffmpeg"
  enabled "yes"

}

Clients

Name Art Verfügbarkeit Website
mpc Konsole extra/mpc http://www.musicpd.org/mpc.shtml
ncmpc Konsole extra/ncmpc http://hem.bredband.net/kaw/ncmpc/
ncmpcpp Konsole extra/ncmpcpp http://unkart.ovh.org/ncmpcpp/
pms Konsole fehlt http://pms.sourceforge.net/
gmpc Gnome-Client extra/gmpc http://sarine.nl/gmpc/
Ario GTK extra/ario http://ario-player.sourceforge.net/
pympd Python-Client extra/pympd http://pympd.sourceforge.net/
Sonata GTK extra/sonata http://sonata.berlios.de/
Cantata Qt extra/cantata http://code.google.com/p/cantata/

Eine Liste mit mehr Clients findet man unter http://www.musicpd.org/clients.shtml

Weblinks