Estoy tratando de configurar un receptor PulseAudio en mi Raspberry Pi, para transmitir todos los sonidos del sistema desde mi PC allí. ¿Cual es la mejor manera de hacerlo?
Por ejemplo, ¿es posible ver películas o la latencia es demasiado alta? Intenté esto hace un tiempo usando gstreamer, pero con una latencia de aproximadamente 2 segundos, lo que es inútil para mis requisitos.
Respuestas:
Con suerte, las instrucciones oficiales para crear una "conexión directa" en una red solo funcionan para la mayoría de las personas, pero parece que pulseaudio y no me llevo tan bien: me llevó horas . [Además de "conexión directa", también puede usar un método de "túnel" descrito más abajo, pero recomiendo leer esto primero.]
Ahora tengo un sonido de transmisión de escritorio (fedora 17) a la pi. He minimizado los
/etc/pulse
archivos de configuración en ambos lados. En el lado del escritorio:/etc/pulse/client.conf
La dirección LAN de mi pi con el puerto predeterminado de pulseaudio. Pero aquí hay algo que luego me confundió por un tiempo: con un servidor especificado, pulseaudio ni siquiera comenzaría:
Se ejecutará en primer plano (probablemente porque no lee pulse-client.conf?). Sin embargo , como resultado, no tiene que ejecutarlo en absoluto en el lado del escritorio (envío) , algo que no se detalla en los documentos de pulseaudio. Al usarlo
lsof -i -P
, parece que los complementos de nivel inferior para varios reproductores multimedia hacen el trabajo.Entonces, esa línea "client.conf" es en realidad todo lo que necesita en el lado del escritorio / cliente, si todo lo que va a hacer es usar la red (pero vea "Aún más complicaciones", más abajo).
Aunque el demonio pulseaudio (en el lado receptor / servidor) se puede ejecutar como un servicio del sistema, los desarrolladores de pulse recomiendan no hacerlo , y de hecho en el pi, el script de inicio solo genera una advertencia: aún debe comenzar usted mismo Fedora ni siquiera incluye una entrada de servicio de arranque systemd para ello.
Por lo tanto, en el lado pi, debe iniciar y detener explícitamente el proceso del servidor pulseaudio, configurado de esta manera:
/etc/pulse/daemon.conf
Puedes usar -1 para
exit-idle-time
mantener el demonio ejecutándose indefinidamente. Tenga en cuenta que estos son segundos y el valor predeterminado es 20 (lo que significa que seguirá muriendo "misteriosamente" si no configura esto)./etc/pulse/default.pa
Como se trata de una aplicación de red, no es una buena idea ejecutarla como root. Sin embargo, como se mencionó anteriormente
man pulseaudio
, también es una buena idea "cambiar el proceso" para darle una mayor prioridad. Puede hacerlo manualmente connice
, pero pulseaudio lo hará automáticamente para root, o miembros delpulse-rt
grupo, si el ejecutable es "setuid", lo que significa que puede hacer uso de algunos privilegios de root y luego cambiar al uid sin privilegios correcto (ping
ypasswd
También necesito hacer esto). Entonces (como root o sudo):No se
pulse-rt
crea ningún grupo cuando pulseaudio está instalado en raspbian, entonces:Esto le dará un gid como 1003. Agregue (por ejemplo) usuario pi a ese grupo:
Pero en raspbian, aún no podrás cambiar de nombre como pi. Para eso, agregue a
/etc/security/limits.conf
:Debe ejecutar un inicio de sesión antes de que se realicen estos cambios; si usa ssh con el pi, solo use
login
. Ahora puede iniciar pulseaudio y se reactivará a sí mismo -11, lo que probablemente sea una prioridad más alta que la mayoría de los otros procesos (mire el valor NICE entop
).Mientras reproduce sonido transmitido desde la red, pulseaudio en el pi utiliza aproximadamente el 10% de la CPU y una cantidad trivial de memoria. :) Él y mi escritorio están en una LAN cableada; el pulso transmite datos pcm sin procesar (creo), por lo que el uso del ancho de banda corresponde a la frecuencia de muestreo de la fuente, 1 kB / sy más. Desafortunadamente, hay un retraso notable en el sonido si está viendo un video.
Aún más complicaciones ...
Desafortunadamente, ninguna de las diversas aplicaciones de sonido de mi PC funcionó de inmediato;
mpg123
no correría en absoluto. Para eso, en fedora, necesitas elmpg123-plugins-pulseaudio
paquete. Para material flash en el navegador (por ejemplo, youtude) necesitaalsa-plugins-pulseaudio
(estos son los que realmente se conectan al servidor remoto). Otras distribuciones deben tener paquetes similares. Si ha estado usando pulseaudio antes (yo no lo estaba), es posible que ya los tenga instalados.Las campanas y silbatos de escritorio de KDE tampoco funcionaron. Este es un problema más difícil de resolver, ya que busca un servidor de pulseaudio local y, como se describe, el uso de una conexión directa significa que no se puede ejecutar ningún servidor localmente. La forma de evitar esto es usar el método de "túnel".
módulo-túnel-sumidero
Esta es la otra forma mencionada en los documentos de pulseaudio. En este caso, tiene un servidor ejecutándose en ambos lados y una mano hacia la otra. Para hacer esto, comente el "servidor predeterminado"
/etc/client.conf
y agregue un local que/etc/default.pa
contenga:Si no pone un
sink_name
pulso, pulseaudio no se iniciará. Sesink
refiere al nombre del sumidero en el lado pi, que luego también necesita un nombre; agregue un correspondientesink_name
a lamodule-alsa-sink
líneadefault.pa
allí:Inicie el servidor en ambos lados y listo ... más o menos. Si bien todo, incluidos los pitidos de KDE ahora se llevaron, la reproducción flash del navegador tartamudeó mucho. Sin embargo, en otro entorno de escritorio (en realidad, solo un administrador de ventanas, fvwm) estaba bien.
Me gusta KDE pero puedo vivir sin los pitidos, así que por ahora voy a seguir con una conexión directa.
Solución de problemas
Si tiene problemas, el uso
pulseaudio -vvvv --log-level=debug
en pi proporciona muchos mensajes de depuración. Inicialmente, cuando no pude obtener sonido en el pi, esto informó un problema "relacionado con un error en el controlador ALSA bcm2835" que me pareció extraño ya que el sonido estaba bien con solo alsa, y estoy seguro de que hay un software pi que depende en pulseaudio,apt-get remove pulseaudio
y una reinstalaciónapt-get install pulseaudio
pareció solucionar esto ... No es una solución que me guste ver, pero bueno, al menos ahora puedo escuchar tish sin tener que enchufar los altavoces en cada caja. Principalmente.fuente