mpd en conflit avec d'autres applications - prendre le contrôle du pouls?

7

Explication simple

Si mpd joue et que le son tente de jouer via une autre application, x , le son provenant de x ne sera pas diffusé.

Si le son d’une autre application, x , est en cours de lecture et que mpd tente alors de le lire, aucun son ne sera émis par mpd alors que le son provenant de x continue à jouer. / p>

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 de faire quelque chose. avec mpd.

Ma plus grande frustration vient d’essayer de relancer le fonctionnement de mpd, car je ne parviens pas à définir une méthode. Parfois, pulseaudio -k semble aider, d'autres fois sudo /etc/init.d/mpd restart , d'autres tuant le chrome (à cause de Flash) avec SIGTERM . La plupart du temps, c'est une combinaison de ce qui précède.

Je pense que cela pourrait être parce que je lance mpd comme un autre utilisateur et utilise pulseaudio. Il n'est pas exécuté en tant qu'utilisateur root ou utilisateur actuel. De plus, mpd est compilé avec le support des impulsions.

J'ai essayé de nombreuses choses, mais honnêtement, je ne pouvais pas réciter ce que cela faisait depuis un certain temps. Je préférerais ne pas tourner la tête sans une certaine direction, mais je serais très heureux de résoudre ce problème une fois pour toutes.

mpd.conf

Simplifié en supprimant les commentaires / lignes vides.

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

Pour préserver cette question: est-ce que quelqu'un sait ce qui cause ceci ou comment le réparer sans exécuter mpd en tant qu'utilisateur actuel?

    
posée Jamie Schembri 04.03.2011 - 19:32
la source

3 réponses

4

J'ai eu ce problème quand j'ai commencé à utiliser mpd, mais c'était il y a un certain temps, donc je ne peux pas me souvenir 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 depuis le menu: System- & gt; Preferences- & gt; 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 que je n’ai pas "accès réseau aux périphériques sonores locaux" activé.

Je pense que vous avez peut-être raison d'exécuter mpd en tant qu'utilisateur actuel, ce que je fais. (Je n'ai aucune idée de la raison de cela!)

Vous trouverez ici un guide simple pour configurer mpd à exécuter en tant qu’utilisateur: lien

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

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

2.) Copiez votre mpdconf dans votre répertoire principal (en format .mpdconf) et remplacez les entrées suivantes par des endroits auxquels votre utilisateur peut accéder et écrire:

music_directory
playlist_directory
db_file
log_file
error_file
pid_file
state_file 

La page que je prends pour cela suggère simplement de créer un dossier .mpd dans votre répertoire personnel pour ce genre de choses, enregistrez-le dans votre répertoire de musique actuel.

3.) Commentez la ligne d’utilisateur dans .mpdconf: #user "mpd"

4.) Maintenant, vous pouvez lancer mpd et mettre à jour la base de données.

5.) Pour que mpd démarre automatiquement en tant qu’utilisateur lors de la connexion, accédez à 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

Il y a probablement des inconvénients à exécuter en tant qu'utilisateur, alors peut-être que cela ne répondra pas à vos besoins.

    
réponse donnée Aibara 04.03.2011 - 21:37
la source
2

Je ne suis pas sûr que ce soit exactement le même problème, mais avec mon ancienne configuration mpd default-ish, je pense que mpd essayait de démarrer son propre son d’impulsion en tant qu’utilisateur différent (l’utilisateur mpd). J'ai trouvé que le paramétrage de la sortie d'impulsion dans /etc/mpd.conf en utilisant 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 pouvez vérifier paprefs que vous acceptez les connexions locales

    
réponse donnée Bill Robinson 02.01.2012 - 12:53
la source
0

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

Tout d'abord, décommentez 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 personnel a 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 /etc/mpd.conf et ajoutez une nouvelle sortie d’impulsion pointant vers 127.0.0.1 en tant que serveur "distant":

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

de lien

    
réponse donnée Pavel1114 10.03.2016 - 19:45
la source

Lire d'autres questions sur les étiquettes