Reenviar audio como X en SSH

27

Si bien es posible usar aplicaciones X de forma remota mediante el uso del interruptor -X en ssh, el sonido se reproduce solo en el altavoz de la máquina remota. Por ejemplo, si veo una película en VLC / Totem, solo se puede ver el video y no puedo escuchar el audio. ¿Hay alguna manera de reenviar el audio también? [sin profundizar en la configuración de Pulse-audio, quiero decir; Como cómo ssh entiende el reenvío X por sí mismo.]

He intentado esto solo en Ubuntu (en varias versiones de Ubuntu de 9.10 a 10.10), si eso ayuda.

Akilan
fuente

Respuestas:

30

Primero, ejecute paprefs, vaya a Servidor de red y marque Habilitar acceso de red a dispositivos de sonido locales . Esto cargará "module-native-protocol-tcp" en PulseAudio.

Ahora puede acceder al servidor PulseAudio de varias maneras:

Reenviar manualmente la conexión TCP a través de SSH

  1. Úselo pax11publishpara descubrir su puerto de escucha PulseAudio (generalmente 4713);
  2. Conéctese a otra computadora con ssh -R 24713:localhost:4713(el puerto remoto '24713' fue elegido arbitrariamente);
  3. Copie su cookie de autenticación (~ / .config / pulse / cookie) en esa computadora;
  4. Finalmente corre export PULSE_SERVER="tcp:localhost:24713"y prueba con pactl info.

Utilice la conexión directa automática con el descubrimiento basado en X11

Siempre que utilice SSH con el reenvío X11 habilitado, los programas PulseAudio usan X11 para descubrir su servidor de sonido (use pax11publisho xprop -root PULSE_SERVERvea por usted mismo). Intentarán establecer una conexión directa (no SSH, sin cifrar) a su computadora para la transmisión de audio.

Utilice la conexión directa automática con el descubrimiento de DNS-SD

Si tiene instalado avahi-daemon y pulseaudio-zeroconf, puede activar "Permitir que otras máquinas descubran dispositivos locales". Esto cargará "module-zeroconf-Publish".

Otras computadoras, con la opción "Hacer que los dispositivos de red detectables estén disponibles localmente" habilitado (module-zeroconf-discover), enumerarán automáticamente las salidas (sumideros) que su computadora exporta. Utilizarán una conexión directa (sin cifrar) para la transmisión de audio.

Este método también requiere que ~ / .config / pulse / cookie sea idéntico en todos los hosts.

Gravedad
fuente
2
Donde ~/.pulse_cookieexiste ¿En el control remoto o local?
HSchmale
2
Ambos. Es generado por el demonio pulseaudio, luego se lee conectando clientes (como una contraseña), por lo que querrá copiarlo del servidor a los clientes. (Tenga en cuenta que la ruta se ha cambiado desde entonces ~/.config/pulse/cookie; si uno no funciona, intente con el otro.)
Grawity
2
Tenga en cuenta que después de cambiar la configuración en paprefs, debe reiniciar manualmente al menos pulseaudio. En mi caso, después de pasar horas tratando de descubrir qué estaba mal, simplemente reinicié, y luego todo funcionó :).
crazy2be
Esto funcionó para mí, gracias. Usando un raspberry pi remoto con rtl-sdr, por lo tanto, desea que el audio funcione a través de ssh.
Paul M