web-dev-qa-db-fra.com

MPD avec pulseaudio

J'ai récemment effectué une nouvelle installation d'Ubuntu 14.10 et, encore une fois, j'ai des problèmes avec le MPD. Je pense avoir réussi à régler le problème la dernière fois, mais je ne sais pas comment.

Mon problème est de pouvoir utiliser un haut-parleur Bluetooth externe avec MPD. Mieux encore, j'aimerais pouvoir utiliser à la fois le haut-parleur branché et le haut-parleur bluetooth.

Malheureusement, MPD n'apparaît pas dans les applications produisant de l'audio avec les paramètres audio de Gnome, et ignore donc la directive d'utiliser le haut-parleur Bluetooth. Je pense que c'est parce que MPD utilise Alsa au lieu de Pulseaudio.

Maintenant, dans mon mpd.conf, j'ai les lignes

audio_output {
    type        "Pulse"
    name        "MPD"
#   server      "localhost"
}

J'ai également essayé de décommenter la ligne du serveur, mais dans ce cas, MPD ne démarre même pas.

Pour clarifier, MPD fonctionne sous l'utilisateur mpdname__, qui se trouve sous les groupes Pulseet Pulse-access, mais cela ne semble pas être suffisant.

Maintenant, je pense que je peux utiliser MPD sous mon propre utilisateur, ce qui pourrait résoudre certains problèmes, mais je ne le ferais pas mieux, car d'autres utilisateurs de ce PC voudront peut-être aussi écouter de la musique.

Quelle est la bonne façon de faire en sorte que MPD utilise Pulseaudio (ou faites tout ce qui est nécessaire pour le connecter à des enceintes autres que celle par défaut?)

5
Andrea

Contrairement à MPD en mode système global, PulseAudio s'exécute dans l'espace utilisateur. Cela signifie que tous les paramètres audio pulsés, y compris la découverte Bluetooth et la fourniture d'un récepteur audio Bluetooth, sont définis à partir d'une session utilisateur.

Le démon MPD, lorsqu'il est exécuté à l'échelle du système, ne peut pas accéder aux périphériques Pulse Audio exécutés dans une session utilisateur. Comme il est théoriquement possible de faire fonctionner Pulse Audio en mode système étendu, il s'agit de non recommandé, du moins nous ne devrions pas le faire dans une configuration de bureau. Ce serait alors une bien meilleure option pour exécuter MPD à partir de l'espace utilisateur.

Pour continuer à utiliser des périphériques, un serveur PulseAudio en cours d'exécution fournit des capacités de diffusion de TCP _, PulseAudio et MPD.

Ceci nécessite les éléments suivants dans /etc/mpd.conf:

audio_output {
       type     "Pulse"
       name     "My Pulse Device"
       server   "localhost"
}

Ensuite, nous devons également charger le protocole TCP afin de le diffuser sur un serveur PulseAudio en cours d'exécution. Cela peut être ajouté au /etc/Pulse/default.pa pour être chargé chaque fois qu'un utilisateur se connecte (ou démarré à partir de la CLI pour un test avec pacmd load-module).

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 # IP of localhost

Disclaimer: Cela devrait fonctionner pour passer à un périphérique audio Bluetooth, mais je n'ai pas pu le tester car mon dongle Bluetooth présente des problèmes sur mon système de test 14.10.

7
Takkat

La solution proposée par @Takkat a également fonctionné pour moi avec une petite modification:

Sur Debian Buster, je devais simplement remplacer localhost par 127.0.0.1 dans l'option mpd.conf server, overwise mpd a tenté de se connecter avec l'adresse IPv6 ::1 et a échoué avec:

ERROR: Failed to open "My Pulse Device" [Pulse]; failed to connect: Access denied

(Désolé pour la réponse au lieu d'un commentaire, je suis nouveau ici et je n'ai pas encore assez de points pour commenter. Aucun problème pour moi si quelqu'un déplace ou supprime ce message).

1
Saïmonn