web-dev-qa-db-fra.com

Comment forcer la redécouverte des périphériques de son virtuel PulseAudio?

J'utilise la fonction PulseAudio des périphériques audio du réseau (pas de multidiffusion/RTP) pour lire le son de mon netbook sur l'équipement audio connecté au HTPC à la maison. Cela crée un périphérique audio virtuel que je peux ensuite utiliser à la place du périphérique physique intégré. La plupart du temps, cela fonctionne très bien. Parfois, cependant, le périphérique audio virtuel n'apparaît pas. Se déconnecter du réseau et se reconnecter au réseau aide parfois, mais pas toujours, et est gênant et potentiellement dangereux pour les connexions TCP existantes.

Ma question est donc la suivante: y a-t-il un moyen de dire à PulseAudio "Hé, il suffit de regarder à nouveau si vous ne pouvez pas vraiment trouver un périphérique de son réseau". ?


Edit: Décharger et recharger le module-zeroconf-discover avec pacmd n'aide pas non plus et il ne n'apparaît pas être un problème avahi en soi puisque avahi-browse -t --all | grep PulseAudio montre beaucoup de choses qui semblent correctes, même lorsque les périphériques ne sont pas listés dans pavucontrol ou pacmd list-sinks.


Edit 2: J'utilise Ubuntu 12.04 sur les deux cases pour toute la différence que cela pourrait faire.

8
Christian

Un simple Sudo service avahi-daemon restart fait l'affaire, même si avahi-browse voit les périphériques avant que l'avahi ne redémarre. Merci à Takkat de m'avoir orienté dans la bonne direction.

4
Christian
  1. Sur le PC "Sink" (Sur le haut-parleur sur lequel vous voulez jouer le son), ouvrez la commande PulseAudio Shell en accédant à Terminal et en émettant la commande suivante.

    $ pacmd

    Vous verrez un shell de type Python avec le message de bienvenue suivant.

    Welcome to PulseAudio! Use "help" for usage information. >>>
  2. Répertoriez les périphériques pouvant lire le son sur le PC à l’aide de la commande du shell PulseAudio.
    >>> list-sinks
    Vous verrez maintenant une liste détaillée de tous les puits de son.
  3. Il suffit de noter le complet nom de l'évier de votre choix. Cela apparaîtrait comme un attribut de la carte son. Par exemple dans mon cas c'est:

    1 sink(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
    ...

La chaîne de mon intérêt est simplement "alsa_output.pci-0000_00_1b.0.analog-stereo"

  1. Allez maintenant sur le PC source (c’est-à-dire l’origine des flux audio multimédia), ouvrez le terminal et lancez la commande suivante

    $ pactl load-module module-tunnel-sink "server=192.168.1.105 sink=alsa_output.pci-0000_00_1b.0.analog-stereo sink_name=home_theater"

    Ici 192.168.1.105 est l’adresse IP du PC récepteur, "alsa_output.pci-0000_00_1b.0.analog-stereo" est la chaîne que vous venez de copier du terminal du récepteur et "home_theater" n’est qu’un nom de fantaisie. appelez ce périphérique de sortie de son virtuel sur votre ordinateur.

  2. Enfin, sélectionnez ce périphérique audio virtuel par:
    $ pacmd set-default-sink home_theater

    Wallah !!
6
Rishav Ambasta

Cette réponse n’a pas été testée, elle risque donc de ne pas fonctionner, mais elle peut vous conduire dans la bonne direction.

Je peux confirmer non résolu problèmes avec un service Avahi qui est parfois incapable de se connecter à un serveur PulseAudio. Nous pouvons réussir la reconnexion en redémarrant le réseau ou le serveur pulseaudio mais, hélas, cela ne fonctionne pas toujours.

Pour résoudre ce problème, nous pouvons essayer d'établir un flux audio réseau en utilisant le protocole natif TCP pour diffuser directement sur IP, plutôt qu'en utilisant une résolution de nom Avahi.

Pour ce faire, nous pouvons tunnelliser un récepteur distant en chargeant le module-tunnel-sink du côté du récepteur. Sur l'expéditeur, nous devons activer le protocole natif TCP en chargeant module-native-protocole-tcp .

Voir aussi cette question pour la terminologie et la définition de la variable Pulse_SERVER:

Comment définir automatiquement le collecteur par défaut de PulseAudio sur un serveur distant au démarrage - Ubuntu 9.04

C’est une question plutôt ancienne pour Ubuntu 9.04 mais, à mon avis, la terminologie et les procédures n’ont pas beaucoup changé depuis.

Veuillez également suivre le Wiki PulseAudio sur les connexions résea .

3
Takkat

Vous pouvez essayer pulseaudio -k, qui tue le service pulseaudio (il semble redémarrer automatiquement). Cela m'a rapporté des choses avant.

Une autre chose qui aide parfois est de décocher puis de re-cocher les cases dans Pulseaudio Preferences (a.k.a. paprefs). Les cases à cocher sont Make discoverable PulseAudio network sound devices available locally dans Network Access et Enable network access to local sound devices dans Network Server. Évidemment, cela ne fonctionne probablement que pour celui que vous utilisez.

1
gib