Lorsque j'essaie de lire mpd via pulseaudio, mpd.log rapporte:
Pulse_output: Impossible d'activer "Pink ROCKI" [Impulsion]: échec de pa_context_connect (): connexion refusée
Mon fichier mpd.conf est Vanilla; la section Pulse est le générique:
audio_output {
type "Pulse"
name "General Pulse"
}
Bien que laugeo l'indique ci-dessous, j'ai également essayé de spécifier un évier individuel, les deux par leur nom:
audio_output {
type "Pulse"
name "ROCKI"
sink "raop_output.ASAP1826T.local"
}
et par index #:
audio_output {
type "Pulse"
name "ROCKI"
sink "4"
}
Que devrais-je essayer ensuite? La configuration de pulseaudio pour une exécution en tant que service système peut-elle aider?
Ceci est sur Ubuntu 14.04, pulseaudio 4.0 (et 5.0), Music Player Daemon 0.18.7
Mise à jour: j'ai trouvé ce blog où le blogueur Louiz semble avoir résolu le même problème (ou très similaire):
MPD tente apparemment de créer un nouveau processus pulseaudio, en tant que mon propre utilisateur, et il échoue car il est déjà en cours d'exécution. Je ne comprenais pas pourquoi il ne pouvait pas simplement utiliser l'instance existante de pulseaudio sans essayer d'en créer une nouvelle.
J'ai compris grâce à ce post .
MPD n’a pas pu trouver l’instance pulseaudio en cours d’exécution car la variable d’environnement XDG_RUNTIME_DIR n’était pas définie et l’emplacement où pulseaudio stockait ses fichiers (le socket, le pid du processus, etc.).
J'ai essayé sa solution:
créer un nouveau fichier /etc/systemd/system/mpd.service.d/fixenv.conf contenant:
[Service] Environnement = XDG_RUNTIME_DIR =/run/user/1000
(Remplacez 1000 par l'ID UNIX de votre utilisateur.)
J'ai redémarré et XDG_RUNTIME_DIR a été défini correctement et Pulse a placé son fichier pid dans le répertoire/run/user/1000/Pulse/(mon ID utilisateur est 1000), mais le même message d'erreur persiste de la part de mpd:
Pulse_output: Impossible d'activer "ROCKI" [Pulse]: échec de pa_context_connect (): connexion refusée
J'en apprends plus sur Linux tous les jours, mais les sockets, process pids, systemd (Ubuntu n'est-il pas censé utiliser upstart? Systemd semble fonctionner et lancer des choses), etc. m perdu dans les bois.
Enfin, mieux que le mode démon pulseaudio, la meilleure solution est là : il s’agit d’exécuter mpd comme vous-même (et non comme utilisateur mpd) afin que vous n’ayez aucun problème à utiliser votre propre session pulseaudio.
Une réponse différente, mais testée et efficace:
configure pulseaudio pour qu'il s'exécute en "mode démon" au lieu du "mode utilisateur" standard
Sudo gedit /etc/init/pulseaudio.conf
#
pour obtenir:start on runlevel [2345]
Sudo usermod -aG Pulse,pulse-access mpd
Sudo usermod -aG Pulse,pulse-access your-login
Maintenant, redémarrez: espérons que cela fonctionnera.
Note: Pour info, ceci page liste les raisons pour lesquelles vous devez éviter le mode démon pulseaudio, mais je le trouve correct sur un PC à utilisateur unique (en particulier, je ne vois pas plus d’utilisation de la CPU/mémoire que le mode utilisateur).
La solution XDG_RUNTIME_DIR a fonctionné pour moi, mais il n’est pas nécessaire de créer un fichier dans/etc/systemd/system. Ajoutez simplement cette ligne dans /etc/init.d/mpd:
export XDG_RUNTIME_DIR=/run/user/1000
J'ai déjà spécifié mpd à exécuter en tant que mon propre utilisateur et groupe "audio" dans /etc/mpd.conf.
Vous pouvez essayer de spécifier le puits pulseaudio dans le fichier de configuration MPD:
Pour afficher les puits pulseaudio, exécutez cette commande dans un terminal:pactl list short sinks
Cela produira quelque chose comme:
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
Choisissez votre évier principal (le 2e dans mon cas parce que je n'ai pas de son HDMI) et copiez son nom dans mpd.conf audio_output:
sortie audio {
type "Pulse"
name "MPD PulseAudio Output"
sink "alsa_output.pci-0000_00_1b.0.analog-stereo"
}