Fehler "Audioausgang konnte nicht geöffnet werden" beim Versuch, Audio von mpd an pulseaudio zu senden


7

Wenn ich versuche, mpd über pulseaudio abzuspielen, meldet mpd.log:

impulsausgang: "Pink ROCKI" konnte nicht aktiviert werden [puls]: pa_context_connect () ist fehlgeschlagen: Verbindung abgelehnt

  • Pulse scheint einwandfrei zu funktionieren, da pacmd list-sinks alle meine Pulssenken anzeigt, das Audio des MB-Browsers über die Standardsenke einwandfrei abgespielt wird und VLC über jeden von ihnen Sound wiedergeben kann.
  • mpd funktioniert gut, wenn ich die Ausgabe über alsa anstelle von Puls sende
  • Sowohl mpd als auch pulseaudio laufen unter meinem Account (fred).
  • Fred, MPD und Pulseaudio sind alle Mitglieder der Puls-, Pulszugriffs- und Audiogruppen.
  • Ich habe dies sogar mit verschiedenen Pulseaudio-Builds versucht: dem 4.0 mit Ubuntu 14.04, dem experimentellen RAOP2 mit Puls 4.0 und dem experimentellen RAOP2 mit Puls 5.0. mpd funktioniert mit keinem von ihnen.

Meine mpd.conf-Datei ist Vanille; Der Pulsabschnitt ist der generische:

    audio_output { 
    type "pulse" 
    name "General Pulse" 
    }

Obwohl, wie Laugeo weiter unten vorschlägt, ich auch versucht habe, eine einzelne Spüle anzugeben, beide mit Namen:

audio_output {
    type        "pulse"
    name        "ROCKI"
    sink        "raop_output.ASAP1826T.local"
}

und nach Index #:

audio_output {
    type        "pulse"
    name        "ROCKI"
    sink        "4"
}

Was soll ich als nächstes versuchen? Könnte es helfen, pulseaudio so zu konfigurieren, dass es als Systemdienst ausgeführt wird?

Dies ist unter Ubuntu 14.04, pulseaudio 4.0 (und 5.0), Music Player Daemon 0.18.7

Update: Ich habe diesen Blog gefunden, in dem der Blogger Louiz das gleiche (oder sehr ähnliche) Problem gelöst zu haben scheint:

MPD versucht anscheinend, als mein eigener Benutzer einen neuen Pulseaudio-Prozess zu erzeugen, und er schlägt fehl, weil er bereits ausgeführt wird. Ich konnte nicht verstehen, warum es nicht einfach die vorhandene pulseaudio-Instanz verwenden konnte, ohne zu versuchen, eine neue zu erzeugen.

Ich habe dank dieses Beitrags verstanden .

MPD konnte die bereits ausgeführte pulseaudio-Instanz nicht finden, da die Umgebungsvariable XDG_RUNTIME_DIR nicht festgelegt wurde und pulseaudio dort seine Dateien speichert (Socket, Prozess-PID usw.).

Ich habe seine Lösung ausprobiert:

Erstellen einer neuen Datei /etc/systemd/system/mpd.service.d/fixenv.conf mit:

[Service] Environment = XDG_RUNTIME_DIR = / run / user / 1000

(Ersetzen Sie 1000 durch die UNIX-ID Ihres Benutzers.)

Ich habe neu gestartet und XDG_RUNTIME_DIR wurde korrekt eingestellt, und Puls hat seine PID-Datei im Verzeichnis / run / user / 1000 / puls / abgelegt (meine Benutzer-ID ist 1000), aber ich erhalte immer noch den gleichen Fehler von mpd:

impulsausgang: "ROCKI" konnte nicht aktiviert werden [puls]: pa_context_connect () ist fehlgeschlagen: Verbindung abgelehnt

Ich lerne jeden Tag mehr über Linux, aber Sockets, Prozess-Pids, systemd (soll Ubuntu nicht upstart verwenden? Systemd scheint zu laufen und Dinge zu starten) usw. liegen momentan alle über meiner Gehaltsstufe - ich ' Ich bin im Wald verloren.


Antworten:


3

Schließlich besser als Pulseaudio Daemon - Modus, ist die beste Lösung , da : es ist über das Laufen mpd wie dich selbst (und nicht mpd Benutzer) , so dass Sie kein Problem haben , Ihre eigene Sitzung Pulseaudio zu verwenden.

Eine andere Antwort, aber getestet und funktioniert auch:
Konfigurieren Sie pulseaudio so, dass es als "Daemon-Modus" anstelle des Standard- "Benutzermodus" ausgeführt wird.

  • Führen Sie in einem Terminal die
    sudo gedit /etc/init/pulseaudio.conf
    Zeile 20 aus und entfernen Sie den Kommentar , um Folgendes #zu erhalten:
    start on runlevel [2345]
    Speichern und Beenden von gedit.
  • Führen Sie diese beiden Befehle in einem Terminal aus:
    sudo usermod -aG pulse,pulse-access mpd
    sudo usermod -aG pulse,pulse-access your-login
    Ersetzen Sie im zweiten Befehl "your-login".

Jetzt neu starten: hoffentlich funktioniert es.

Hinweis: Auf dieser Seite finden Sie Informationen, warum Sie den Pulseaudio-Daemon-Modus vermeiden müssen, aber ich finde ihn auf einem Einzelbenutzer-PC in Ordnung (insbesondere sehe ich nicht mehr CPU- / Speicherauslastung als im Benutzermodus).


1
... und brechen, wer weiß was auf dem Weg. Die Verwendung des Daemon-Modus wird nicht empfohlen und daher nicht gut getestet.
Barafu Albino

Ja, ich habe die Antwort bearbeitet
laugeo

Nun, da diese pulseaudio-Installation bereits kaputt ist, bin ich bereit, es zu versuchen. Ich habe jedoch keine pulseaudio.conf in meinem Verzeichnis / etc / init. Ich habe alle mir bekannten Impulskonfigurationsdateien und -verzeichnisse durchsucht und kann keine Dateien mit "start on runlevel [2345]" finden, was seltsam ist, da ich weiß, dass ich eine Konfigurationsdatei mit dieser Datei gesehen habe letzte Woche. Möglicherweise ist es während meiner Deinstallations- / Lösch- / Neuinstallationsversuche ins Wanken geraten. Ich werde sehen, ob ich irgendwo eine Beispieldatei finden kann ...
Fred Hamilton

Fügen Sie eine saubere pulseaudio.conf in / etc / init ein und bringen Sie sie zum Laufen ... aber jetzt funktioniert pacmd nicht ("Kein PulseAudio-Daemon läuft oder läuft nicht als Sitzungsdämon"), sodass ich keine Senken auflisten kann. Es ist also immer noch irgendwie kaputt, aber zumindest ich mpd spielt gut mit Puls. Ich wollte, dass pulseaudio "richtig" funktioniert (wie es die Entwickler beabsichtigt hatten), aber es scheint die einzige Möglichkeit zu sein, mein Problem zu lösen, ihre Warnungen zu ignorieren und es im Systemmodus auszuführen.
Fred Hamilton

Der beste Weg könnte gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNTU sein : Es geht darum, mpd als Sie selbst (und nicht als mpd-Benutzer) auszuführen, daher sollte es kein Problem geben, Ihre Sitzung pulseaudio zu verwenden. In diesem Fall kehren Sie pulseaudio in den Nicht-Daemon-Modus zurück
laugeo

3

Die XDG_RUNTIME_DIR-Lösung hat bei mir funktioniert, es ist jedoch nicht erforderlich, eine Datei in / etc / systemd / system zu erstellen. Fügen Sie einfach diese Zeile in /etc/init.d/mpd hinzu:

export XDG_RUNTIME_DIR=/run/user/1000

Ich habe mpd bereits als meinen eigenen Benutzer und als "Audio" -Gruppe in /etc/mpd.conf angegeben.


Was ist "Die XDG_RUNTIME_DIR-Lösung"?
Karl Richter

Es ist in der Frage und auch in meiner Antwort beschrieben (etwas anders).
user13097

0

Sie können versuchen, die pulseaudio-Senke in der MPD-Konfigurationsdatei anzugeben:

Führen Sie diesen Befehl in einem Terminal aus, um Pulseaudio-Senken anzuzeigen:
pactl list short sinks

Es wird etwas ausgegeben wie:

0   alsa_output.pci-0000_00_03.0.hdmi-stereo    module-alsa-card.c  s16le 2ch 44100Hz   IDLE
1   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   RUNNING

Wählen Sie Ihre Hauptspüle (die zweite in meinem Fall, weil ich keinen HDMI-Sound habe) und kopieren Sie den Namen in mpd.conf audio_output:

Audioausgang {

    type                    "pulse"
    name                    "MPD PulseAudio Output"
   sink                    "alsa_output.pci-0000_00_1b.0.analog-stereo"

}}


Danke, aber das habe ich schon mit dem Namen und der Indexnummer versucht - beides hat nicht funktioniert. Ich glaube nicht, dass das MPD-Puls-Gespräch so weit kommt. Aber danke für "pactl list short sinks" - ich habe "pacmd list-sinks" verwendet; deine ist viel prägnanter.
Fred Hamilton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.