web-dev-qa-db-fra.com

MPD en conflit avec d'autres applications - prendre le contrôle de pouls?

Explication simple

Si mpd est en cours de lecture et que le son tente de s’exécuter via une autre application, x , le son provenant de x ne sera pas restitué.

Si le son d’une autre application, x , est en lecture et que mpd tente de le lire, aucun son ne sortira de mpd tandis que le son de x continue de jouer.

Détails

J'ai d'abord remarqué ce problème avec Flash, et cela continue d'être le scénario le plus courant. J'ai posté une question à ce sujet avant de réaliser que ce n'était pas strictement lié à Flash, mais plutôt à quelque chose à voir avec mpd.

Ma plus grande frustration vient d'essayer de faire fonctionner MPD à nouveau, car il me semble impossible de trouver une méthode. Parfois, pulseaudio -k semble aider, d'autres fois Sudo /etc/init.d/mpd restart, d'autres tuent le chrome (en raison de Flash) avec SIGTERM. La plupart du temps, c'est une combinaison de ce qui précède.

Je pense que cela pourrait être dû au fait que je lance mpd en tant qu’autre utilisateur et que j’utilise pulseaudio. Il n'est pas exécuté en tant qu'utilisateur root ou actuel. De plus, mpd est compilé avec le support Pulse.

J'ai essayé de nombreuses choses, mais honnêtement, je ne pouvais pas réciter quoi que ce soit, comme cela fait longtemps. Je préférerais ne pas fouiner sans instructions, mais je serais vraiment heureux de régler ce problème une fois pour toutes.

mpd.conf

Simplifié en supprimant les commentaires/lignes vierges.

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"

Question

Par souci de garder cela une question: est-ce que quelqu'un sait ce qui est la cause, ou comment le réparer sans utiliser mpd en tant qu'utilisateur actuel?

8
Jamie Schembri

J'ai eu ce problème quand j'ai commencé à utiliser mpd, mais c'était il y a un certain temps déjà, donc je ne me souviens pas exactement de ce que j'ai fait pour le réparer!

Avez-vous des préférences PulseAudio installées? J'ai trouvé cette astuce sur un forum: Sudo apt-get install paprefs

Ensuite, ouvrez les préférences PulseAudio à partir du menu: Système-> Préférences-> Préférences PulseAudio Cliquez sur l'onglet Serveur réseau, puis cochez la case "Activer l'accès réseau aux périphériques audio locaux", puis cochez la case "Ne nécessite pas d'authentification". Après cela, redémarrez mpd: Sudo /etc/init.d/mpd restart

Cependant ... Je viens de me rendre compte que mpd fonctionne bien pour moi et je n'ai pas "l'accès réseau aux périphériques audio locaux" activé.

Je pense que vous avez peut-être raison de devoir exécuter mpd en tant qu'utilisateur actuel, ce que je fais. (Je ne sais pas pourquoi c'est bien ça!)

Un guide simple pour configurer mpd pour qu'il soit exécuté en tant qu'utilisateur peut être trouvé ici: http://gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNT

Pour résumer, puisque vous avez déjà installé mpd:

1.) Arrêtez-le: Sudo update-rc.d mpd disable

2.) Copiez votre fichier mpdconf dans votre répertoire personnel (sous la forme .mpdconf) et modifiez les entrées suivantes en des emplacements auxquels votre utilisateur peut accéder et écrire:

music_directory
playlist_directory
db_file
log_file
error_file
pid_file
state_file 

La page dont je tire cette page suggère de simplement créer un dossier .mpd dans votre répertoire personnel pour ce contenu, enregistrez-le dans votre répertoire de musique.

3.) Mettez en commentaire la ligne utilisateur dans le fichier .mpdconf: #user "mpd"

4.) Vous pouvez maintenant exécuter mpd et mettre à jour la base de données.

5.) Pour que mpd démarre automatiquement en tant qu'utilisateur lors de la connexion, allez dans Applications de démarrage et ajoutez une entrée pour mpd, puis créez un fichier de démarrage automatique dans ~/.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

L'utilisation en tant qu'utilisateur présente probablement des inconvénients, alors peut-être que cela ne répondra pas à vos besoins.

5
Aibara

Pas sûr que ce soit exactement le même problème, mais avec mon ancienne configuration default-ish mpd, je pense que mpd essayait de démarrer son propre fichier audio Pulse en tant qu'utilisateur différent (l'utilisateur mpd). J'ai trouvé que régler ma sortie Pulse dans / etc/mpd.conf utiliser un socket pour se connecter est plus simple pour éviter ce genre de problème.

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

Ensuite, vous voudrez peut-être vérifier paprefs que vous acceptez les connexions locales

2
Bill Robinson

Lorsqu'il est exécuté comme son propre utilisateur conformément aux instructions du wiki, mpd ne pourra pas envoyer de son au serveur pulseaudio d'un autre utilisateur. Plutôt que de configurer pulseaudio en tant que démon à l'échelle du système, une pratique fortement déconseillée en amont, vous pouvez plutôt configurer mpd pour qu'il utilise le module tcp de pulseaudio pour envoyer le son à localhost:

Commencez par décommenter le module tcp dans /etc/Pulse/default.pa ou $ XDG_CONFIG_HOME/Pulse/default.pa (généralement ~/.config/Pulse/default.pa) et définissez 127.0.0.1 comme adresse IP autorisée. le répertoire de base a la priorité:

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

Des plages IP supplémentaires en notation CIDR peuvent être ajoutées en utilisant; comme séparateur. Une fois cette opération terminée, redémarrez pulseaudio:

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

Ensuite, éditez le fichier /etc/mpd.conf et ajoutez une nouvelle sortie Pulse indiquant 127.0.0.1 comme un serveur "distant":

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

à partir de https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks

0
Pavel1114