Transférer l'audio comme X dans SSH

27

Bien qu'il soit possible d'utiliser des applications X à distance en utilisant le commutateur -X dans ssh, le son est lu uniquement dans le haut-parleur de la machine distante. Par exemple, si je regarde un film dans VLC / Totem, seule la vidéo est visible et je n'entends pas l'audio. Existe-t-il également un moyen de transmettre l'audio? [sans fouiller dans la configuration de Pulse-audio, je veux dire; Comme la façon dont ssh comprend le transfert X par lui-même.]

J'ai essayé cela uniquement dans Ubuntu (dans diverses versions d'Ubuntu de 9.10 à 10.10), si cela aide.

Akilan
la source

Réponses:

30

Tout d'abord, exécutez paprefs, accédez à Serveur réseau et cochez Activer l'accès réseau aux périphériques audio locaux . Cela chargera "module-native-protocol-tcp" dans PulseAudio.

Vous pouvez désormais accéder au serveur PulseAudio de plusieurs manières:

Transférer manuellement la connexion TCP sur SSH

  1. Utilisez pax11publishpour découvrir votre port d'écoute PulseAudio (généralement 4713);
  2. Connectez-vous à un autre ordinateur avec ssh -R 24713:localhost:4713(le port distant '24713' a été choisi arbitrairement);
  3. Copiez votre cookie d'authentification (~ / .config / pulse / cookie) sur cet ordinateur;
  4. Enfin, exécutez export PULSE_SERVER="tcp:localhost:24713"et testez avec pactl info.

Utiliser une connexion directe automatique avec la découverte basée sur X11

Chaque fois que vous SSH avec le transfert X11 activé, les programmes PulseAudio utilisent X11 pour découvrir votre serveur de son (utilisez pax11publishou xprop -root PULSE_SERVERpour voir par vous-même). Ils essaieront d'établir une connexion directe (non SSH, non chiffrée) à votre ordinateur pour la diffusion audio.

Utiliser une connexion directe automatique avec la découverte DNS-SD

Si vous avez installé avahi-daemon et pulseaudio-zeroconf, vous pouvez activer "Autoriser d'autres machines à découvrir les périphériques locaux". Cela chargera "module-zeroconf-publish".

Les autres ordinateurs, avec l'option "Rendre les périphériques réseau détectables disponibles localement" activés (module-zeroconf-discovery), répertorieront automatiquement les sorties (récepteurs) que votre ordinateur exporte. Ils utiliseront une connexion directe (non cryptée) pour le streaming audio.

Cette méthode nécessite également que ~ / .config / pulse / cookie soit identique sur tous les hôtes.

grawity
la source
2
~/.pulse_cookieexiste-t-il? Sur la télécommande ou localement?
HSchmale
2
Tous les deux. Il est généré par le démon pulseaudio, puis lu en connectant les clients (comme un mot de passe), vous voudrez donc le copier du serveur vers les clients. (Notez que le chemin a depuis été changé en ~/.config/pulse/cookie; si l'un ne fonctionne pas, essayez l'autre.)
grawity
2
Notez qu'après avoir modifié les paramètres dans paprefs, vous devez redémarrer manuellement au moins pulseaudio. Dans mon cas, après avoir passé des heures à essayer de comprendre ce qui n'allait pas, je viens de redémarrer, puis tout a fonctionné :).
crazy2be
Cela a fonctionné pour moi, merci. Utiliser un raspberry pi à distance avec rtl-sdr, donc vouloir faire fonctionner l'audio sur ssh.
Paul M