Estoy usando la función PulseAudio de dispositivos de sonido de red (no Multicast / RTP) para reproducir sonido desde mi netbook en el equipo de audio conectado al HTPC cuando estoy en casa. Esto crea un dispositivo de sonido virtual que luego puedo usar en lugar del físico incorporado. La mayoría de las veces esto funciona bien. A veces, sin embargo, el dispositivo de sonido virtual simplemente no aparece. Desconectarse y volver a conectarse a la red ayuda a veces, pero no siempre, y es molesto y potencialmente malo para las conexiones TCP existentes.
Entonces mi pregunta básicamente es: ¿Hay alguna forma de decirle a PulseAudio "Oye, solo mira de nuevo si realmente no puedes encontrar un dispositivo de sonido de red"?
Editar: descargar y volver a cargar module-zeroconf-discover
con pacmd
tampoco ayuda y no parece ser un problema de por sí, ya que avahi-browse -t --all | grep PulseAudio
muestra muchas cosas de aspecto correcto, incluso cuando los dispositivos no están listados en pavucontrol o pacmd list-sinks
.
Edición 2: estoy usando Ubuntu 12.04 en ambos cuadros para toda la diferencia que pueda hacer.
fuente
Respuestas:
$ pacmd
Verá un shell similar a Python con el siguiente mensaje de bienvenida.
Welcome to PulseAudio! Use "help" for usage information. >>>
>>> list-sinks
Ahora verá una lista detallada de todos los sumideros de sonido.
1 sink(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
...
La cadena de mi interés es solo "alsa_output.pci-0000_00_1b.0.analog-stereo"
$ 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"
Aquí 192.168.1.105 es la dirección IP de la PC de sumidero, "alsa_output.pci-0000_00_1b.0.analog-stereo "es la cadena que acaba de copiar desde la terminal del receptor y" home_theater "es solo un nombre elegante para llamar a este dispositivo de salida de sonido virtual en su computadora.
$ pacmd set-default-sink home_theater
Wallah !!
fuente
Un simple
sudo service avahi-daemon restart
hace el truco, a pesar de queavahi-browse
ve los dispositivos antes de que se reinicie ese avahi. Gracias a Takkat por señalarme en la dirección correcta.fuente
Esta respuesta no ha sido probada, por lo que podría no funcionar, pero puede llevarlo a la dirección correcta.
Puedo confirmar problemas no resueltos con un servicio Avahi que a veces no puede conectarse a un servidor PulseAudio. Puede que tengamos éxito reconectando reiniciando la red o el servidor pulseaudio, pero lamentablemente esto no siempre funciona.
Para superar este problema, podemos intentar establecer una transmisión de audio de red utilizando el protocolo TCP nativo para transmitir directamente a la IP en lugar de utilizar una resolución de nombre Avahi.
Para hacerlo, podemos tunelizar un sumidero remoto cargando el módulo-túnel-sumidero en el lado del receptor. En el remitente tenemos que habilitar el protocolo TCP nativo cargando module-native-protocol-tcp .
Vea también esta pregunta para la terminología y cómo definir la
PULSE_SERVER
variable:Cómo configurar automáticamente el receptor predeterminado de PulseAudio en el servidor remoto en el arranque - Ubuntu 9.04
Es una pregunta bastante antigua para Ubuntu 9.04, pero para mi conocimiento, la terminología y los procedimientos no han cambiado mucho desde entonces.
Siga también el Wiki PulseAudio sobre conexiones de red .
fuente
sudo service avahi-daemon restart
no esperaba eso porqueavahi-browse
ve los dispositivos incluso antes del reinicio, pero supongo que el reinicio provoca que se vuelva a llamar a la devolución de llamada, que es todo lo que se necesita.Puede intentarlo
pulseaudio -k
, lo que mata el servicio pulseaudio (parece que se inicia de nuevo automáticamente). Esto me ha devuelto las cosas antes.La otra cosa que a veces ayuda es desmarcar y luego volver a marcar las casillas en
Pulseaudio Preferences
(akapaprefs
). Las casillas de verificación estánMake discoverable PulseAudio network sound devices available locally
enNetwork Access
, yEnable network access to local sound devices
enNetwork Server
. Obviamente, esto probablemente solo funcione para el que estás usando.fuente