mpd im Widerspruch zu anderen Anwendungen - Kontrolle über den Puls übernehmen?

8

Einfache Erklärung

Wenn mpd abgespielt wird und der Ton versucht, über eine andere Anwendung ( x) abzuspielen , wird kein Ton von x ausgegeben.

Wenn der Ton einer anderen Anwendung, x , abgespielt wird und mpd versucht zu spielen, wird kein Ton von mpd ausgegeben, während der Ton von x weiter abgespielt wird .

Einzelheiten

Ich habe dieses Problem zum ersten Mal bei Flash bemerkt, und dies ist weiterhin das häufigste Szenario. Ich habe eine Frage dazu gestellt, bevor mir klar wurde, dass sie nicht ausschließlich mit Flash zusammenhängt, sondern etwas mit mpd zu tun hat.

Meine größte Frustration kommt von dem Versuch, mpd wieder zum Laufen zu bringen, da ich anscheinend keine Methode festlegen kann. Manchmal pulseaudio -kscheint es zu helfen, manchmal sudo /etc/init.d/mpd restarttöten andere Chrom (aufgrund von Flash) mit SIGTERM. Meistens ist es eine Kombination der oben genannten.

Ich denke, das könnte daran liegen, dass ich mpd als anderer Benutzer ausführe und pulseaudio verwende. Es wird nicht als Root oder aktueller Benutzer ausgeführt. Außerdem wird mpd mit Impulsunterstützung kompiliert.

Ich habe zahlreiche Dinge ausprobiert, konnte aber ehrlich gesagt nicht rezitieren, wie es schon einige Zeit her ist. Ich würde lieber nicht ohne eine Richtung herumstöbern, aber ich würde dieses Problem gerne ein für alle Mal beheben.

mpd.conf

Vereinfacht durch Entfernen von Kommentaren / Leerzeilen.

music_directory     "/var/lib/mpd/music"
playlist_directory      "/var/lib/mpd/playlists"
db_file         "/var/lib/mpd/tag_cache"
log_file            "/var/log/mpd/mpd.log"
pid_file            "/var/run/mpd/pid"
state_file          "/var/lib/mpd/state"

user                "mpd"
bind_to_address     "wilson"

input {
        plugin "curl"
}

audio_output {
    type        "pulse"
    name        "My Pulse Output"

}

filesystem_charset      "UTF-8"
id3v1_encoding          "UTF-8"

Frage

Um dies zu beantworten: Weiß jemand, was dies verursacht, oder wie man es behebt, ohne mpd als aktuellen Benutzer auszuführen?

Jamie Schembri
quelle
1
Wenn Sie etwas über mpd abspielen (und der Sound davon funktioniert), laden Sie das Fenster mit den Soundeigenschaften, klicken Sie auf die Registerkarte Anwendungen, und Sie erfahren mit Sicherheit, ob mpd PA verwendet oder nicht.
Oli
Das Ausführen von mpd als aktueller Benutzer gemäß den Anweisungen von Alibara Iduas umgeht das Problem. Ich bin immer noch daran interessiert, warum dies als Benutzer "mpd" nicht richtig läuft.
Jamie Schembri

Antworten:

5

Ich hatte dieses Problem, als ich anfing, mpd zu verwenden, aber es ist schon einige Zeit her, daher kann ich mich nicht genau erinnern, was ich getan habe, um es zu beheben!

Haben Sie PulseAudio-Einstellungen installiert? Ich habe diesen Tipp in einem Forum gefunden: sudo apt-get install paprefs

Öffnen Sie dann die PulseAudio-Einstellungen über das Menü: System-> Einstellungen-> PulseAudio-Einstellungen Klicken Sie auf die Registerkarte Netzwerkserver, aktivieren Sie das Kontrollkästchen "Netzwerkzugriff auf lokale Audiogeräte aktivieren" und aktivieren Sie schließlich das Kontrollkästchen "Keine Authentifizierung erforderlich". Starten Sie danach mpd neu:sudo /etc/init.d/mpd restart

Allerdings ... Ich habe gerade festgestellt, dass mpd für mich gut funktioniert und ich keinen "Netzwerkzugriff auf lokale Audiogeräte" aktiviert habe.

Ich denke, Sie haben vielleicht Recht damit, dass Sie mpd als aktuellen Benutzer ausführen müssen, was ich auch tue. (Ich habe keine Ahnung, warum das so ist!)

Eine einfache Anleitung zum Einrichten von mpd für die Ausführung als Benutzer finden Sie hier: http://gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNTU

Um es zusammenzufassen, da Sie bereits mpd installiert haben:

1.) Hör auf: sudo update-rc.d mpd disable

2.) Kopieren Sie Ihre mpdconf in Ihr Home-Verzeichnis (als .mpdconf) und ändern Sie die folgenden Einträge in Orte, auf die Ihr Benutzer zugreifen und schreiben kann:

music_directory
playlist_directory
db_file
log_file
error_file
pid_file
state_file 

Die Seite, von der ich dies nehme, schlägt vor, nur einen MPD-Ordner in Ihrem Home-Verzeichnis für dieses Zeug zu erstellen, außer für Ihr eigentliches Musikverzeichnis.

3.) Kommentieren Sie die Benutzerzeile in .mpdconf aus: #user "mpd"

4.) Jetzt können Sie mpd ausführen und die Datenbank aktualisieren.

5.) Um mpd beim Anmelden automatisch als Benutzer zu starten, gehen Sie zu Startanwendungen und fügen Sie einen Eintrag für mpd hinzu. Erstellen Sie dann eine Autostart-Datei in ~ / .config / autostart /.

[Desktop Entry]
Type=Application
Exec=mpd
Hidden=false
NoDisplay=false
Terminal=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Music Player Daemon
Name=Music Player Daemon
Comment[en_US]=plays the music
Comment=plays the music

Das Ausführen als Benutzer hat wahrscheinlich Nachteile, sodass dies möglicherweise nicht Ihren Anforderungen entspricht.

Aibara
quelle
Bevor ich dies las, löschte ich pulseaudio und mpd. Pulseaudio funktionierte nach der Installation ziemlich gut, aber ich konnte aus irgendeinem Grund keinen Ton auf mpd zurückbekommen. Wie auch immer, ich bin der Anleitung gefolgt und jetzt führe ich mpd als aktuellen Benutzer aus und es funktioniert gut. Ich hätte es vorgezogen, es als Benutzer "mpd" auszuführen, und da dies eher eine Problemumgehung als eine Antwort ist, werde ich es nicht als Antwort akzeptieren. Ich bin immer noch daran interessiert, warum mpd nicht so als Benutzer "mpd" ausgeführt wird, wie ich es gerne hätte (vielleicht sollte pulseaudio unter root laufen?). Egal, ich hoffe du verstehst und du hast meinen Dank!
Jamie Schembri
1
Kein Problem, froh, dass es jetzt zumindest funktioniert. Das einzige andere, was ich mir vorstellen könnte, wäre sicherzustellen, dass "mpd" als Gruppenmitglied in der Gruppe "Pulszugriff" (und möglicherweise auch "Puls") aufgeführt ist, wenn es als Benutzer "mpd" ausgeführt wird. Aber ich würde mir vorstellen, dass dies nur dann ein Problem wäre, wenn Sie überhaupt keinen Ton hätten, nicht diesen seltsamen Konflikt. Hm, siehe auch die Abschnitte "MPD & Alsa" und "MPD & PulseAudio" auf dieser Archlinux-Wiki-Seite: wiki.archlinux.org/index.php/Music_Player_Daemon
Aibara
Nochmals vielen Dank, Aibara. Ich hatte zuvor sichergestellt, dass mpd in den richtigen Gruppen für Puls ist, also war das in diesem Fall nicht das Problem. Der Link, den Sie gepostet haben, ist sehr interessant, insbesondere, weil er mein genaues Problem im Abschnitt "MPD & Alsa" beschreibt! Wäre dies an Pulse anpassbar?
Jamie Schembri
Es ist seltsam, dass das gleiche Problem mit Alsa eine einfache Lösung hat, aber ich bin mir nicht sicher, ob die Alsa-Lösung auf Pulse angewendet werden kann - das ist mir wirklich ein Rätsel. Alles, was ich über Leute gelesen habe, die dieses Problem mit Pulse haben, führt entweder dazu, dass MPD als Benutzer ausgeführt wird, oder die PulseAudio-Einstellungen ändern sich. Es tut uns leid!
Aibara
Dieses Problem verursachte mir auch einige Probleme, bis ich es auf MPD isolierte. Übrigens hat die erste Lösung mit Paprefs bei mir nicht funktioniert, die zweite jedoch.
Laurence
2

Ich bin mir nicht sicher, ob es genau das gleiche Problem ist, aber ich glaube, dass mpd mit meinem alten Standard-MPD-Setup versucht hat, sein eigenes Puls-Audio als ein anderer Benutzer (der MPD-Benutzer) zu starten. Ich fand es einfacher, meinen Impulsausgang in /etc/mpd.conf auf die Verwendung eines Sockets zum Verbinden einzustellen , um diese Art von Problem zu vermeiden.

audio_output {
        type            "pulse"
        name            "My Pulse Output"
        server          "localhost"
}

Dann möchten Sie möglicherweise überprüfen, ob Sie lokale Verbindungen akzeptieren

Bill Robinson
quelle
Auf Gentoo, ich brauche auch meine Benutzer zu kopieren , .pulse-cookieum /var/lib/mpddiese zur Arbeit zu kommen, oder das Pulseaudio kann nicht mit failed to connect: Access denied, obwohl ich nicht sicher bin , ist , dass der richtige Weg.
Rebus
0

Wenn mpd gemäß den Wiki-Anweisungen als eigener Benutzer ausgeführt wird, kann es keinen Sound an den pulseaudio-Server eines anderen Benutzers senden. Anstatt pulseaudio als systemweiten Daemon einzurichten, von dem Upstream dringend abgeraten wird, können Sie mpd so konfigurieren, dass das TCP-Modul von pulseaudio zum Senden von Sound an localhost verwendet wird:

Kommentieren Sie zunächst das TCP-Modul in /etc/pulse/default.pa oder $ XDG_CONFIG_HOME / puls / default.pa (normalerweise ~ / .config / puls / default.pa) aus und legen Sie 127.0.0.1 als zulässige IP-Adresse fest. Das Home-Verzeichnis hat Vorrang:

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
#load-module module-zeroconf-publish

Zusätzliche IP-Bereiche in CIDR-Notation können mit hinzugefügt werden. als Trennzeichen. Sobald dies abgeschlossen ist, starten Sie pulseaudio neu:

$ pulseaudio --kill
$ pulseaudio --start -or- start-pulseaudio-x11/kde

Bearbeiten Sie als Nächstes /etc/mpd.conf und fügen Sie einen neuen Impulsausgang hinzu, der auf 127.0.0.1 als "Remote" -Server verweist:

audio_output {
       type     "pulse"
       name     "Local Music Player Daemon"
       server       "127.0.0.1"
}

von https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks

Pavel1114
quelle