El flash en los navegadores no reproduce el sonido con precisión utilizando el audio de red Pulse

18

Uso PulseAudio para enviar sonido a través de la LAN a un servidor de audio.

Al reproducir cualquier medio Flash en Firefox o Chrome, el sonido se agita (por ejemplo ), como si el volumen subiera y bajara cada segundo.

He descubierto que puedo detener el sonido que agita si sigo estos pasos:

  • Comience un video Flash, como un video en YouTube

  • Ejecutar pulseaudio --killen el servidor

  • Espera unos 7 segundos

Después de esto, el servidor PulseAudio reaparece automáticamente, y el sonido en el video Flash está bien.

El problema es que tengo que hacer esto cada vez que inicio un video Flash. Esto obviamente no es deseable.

¿Cómo hago lo que sea que haga que el sonido funcione cuando sigo estos pasos para que no tenga que hacerlos?

Dudo que alguien presente una solución inmediata y simple (aunque eso sería bueno), por lo que la recompensa podría ir a cualquiera que proporcione al menos un método para diagnosticar el problema.


Detalles

Aquí están las configuraciones de salida de mi dispositivo de sonido. Por lo que puedo decir, los cuatro dispositivos apuntan exactamente al mismo dispositivo físico.

ajustes de sonido

Salida de registro de PulseAudio , tomada al intentar reproducir un video Flash.

Intenté obtener detalles de registro de Flash, pero a pesar de instalar y habilitar Flash para la depuración, no ha generado ninguna salida .

El problema no se presenta con ningún otro software, por lo que estoy razonablemente seguro de que es específico de cómo Flash interactúa con mi configuración de sonido.

Aquí hay algunos resultados de error que pueden ser útiles:

$ cat /var/log/syslog | grep pulseaudio
Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found
Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module-gconf.c: pa_module_load() failed
Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine!
Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration.
Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found
Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module-gconf.c: pa_module_load() failed
Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine!
Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration.
Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found
Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module-gconf.c: pa_module_load() failed
Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine!
Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration.

Aquí está la salida de pactl listdesde el servidor (ordenador con altavoces) .

Aquí está la salida de pactl listdesde el cliente .

Interrogador
fuente
¿Qué tipo de conexión de red hay entre la fuente / sumidero?
ish
@izx: No sé qué quieres decir con "fuente / sumidero". Si esa es otra forma de decir "servidor / cliente", entonces es una conexión LAN Ethernet. Si se trata de algo más, tendrá que explicar a qué se refiere.
Interlocutor
Dave, ¿puedes unirte a la sala de chat? Creo que probablemente tiene una solución, pero necesidad de hablar ...
ish
Si no, sólo la intención cable o inalámbrica y algunos detalles, por ejemplo, por cable = 100 MBps router, etc. o inalámbrica = 802.11G, N, etc.
ish
@izx: Oh, ya veo. Es una LAN cableada con un enrutador entre ellos. Creo que son 100 MBps. Creo que el cliente es capaz de 1GBps, pero la tarjeta LAN del servidor todavía es de 100GBps. Si eso es importante y hay un comando que puedo ejecutar para obtener una velocidad exacta, hágamelo saber.
Interlocutor

Respuestas:

10

Prefacio

Pude replicar el problema de Dave en experimentos, y me llevaron a creer que Flash de alguna manera está enviando el sonido a PulseAudio de tal manera que crea mucho tráfico de red (piense en muchos paquetes pequeños, no en ancho de banda); esto abruma la red "túnel" que PulseAudio ha creado, es decir, tiene

Youtube => [PA-client => network => PA-server] => speakers

Podría resolver el problema colocando el cliente y el servidor en su propia red virtual, dándoles una conectividad infinitamente rápida (10 Gbits / seg) entre ellos; obviamente, eso no funciona para redes del mundo real :)

Entonces, un poco de búsqueda en Google y esta publicación y esta me dieron la idea de soltar el túnel (intermediario, como lo dijo Dave acertadamente), y hacer que el cliente hable directamente con el servidor, es decir

Youtube => network => PA-server => speakers

Y eso funcionó para mí; Los videos flash / sonido se reproducen perfectamente.

¡Vamos a intentarlo!

Esto supone que su cliente-servidor está en una red local (enrutador, etc.)

  1. Preliminar: en la máquina cliente, si tiene una configuración existente, abra paprefsy desmarque todo ; luego mata PulseAudio para estar seguro.

  2. En la máquina del servidor (es decir, la que tiene los altavoces), inicie Preferencias PA ( paprefs) y configúrelo de la siguiente manera:

    ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

    • Luego ciérrelo y elimine PulseAudio en un terminal como se muestra, espere y verifique que ahora esté escuchando en el puerto 4713:

    ingrese la descripción de la imagen aquí

    • Si no lo ve, abra paprefsnuevamente y marque las casillas restantes en las pestañas Acceso a la red y Servidor de red (no están dañadas)

    • Asegúrese de conocer la dirección IP del servidor: uso ifconfig, etc. Lo usaremos 192.168.0.4en nuestro ejemplo.

  3. En la máquina del cliente, abra una terminal y pruebe primero nuestra conexión directa, con una muestra de voz WAV (reemplace 192.168 ... ¡con la IP de su servidor!)

    wget http://www.signalogic.com/melp/EngSamples/Orig/female.wav
    paplay --server = 192.168.0.4: 4713 female.wav
    
    • Abortar con Ctrl-C si funciona, puede volverse aburrido;)

Ahora, cierre todas las instancias del navegador en ejecución y luego inícielo (suponiendo que Firefox aquí tenga la siguiente sintaxis):

PULSE_SERVER=192.168.0.4:4713 firefox &
  • ¡Reemplácelo 192...con la IP apropiada para su servidor!

  • En esa instancia de Firefox, abra Youtube (o cualquier sitio de videos Flash) e intente reproducir videos de nuevo --- con los dedos cruzados, ¡debería funcionar sin tartamudear / pausar!

Haz que se pegue

Si desea que esta corrección se aplique a todos los programas en lugar de tener que poner PULSE_SERVER=192.168.0.4:4713delante de cada comando, edite /etc/environmenten el cliente y agregue PULSE_SERVER=192.168.0.4:4713una nueva línea al final del archivo. Agregue también un salto de línea al final.

Esto hará que todo el sonido del cliente vaya al servidor Pulseaudio, así que asegúrese de que eso es lo que desea antes de realizar esta edición en su /etc/environmentarchivo.

Reinicia y disfruta de una experiencia de audio excelente. ;)

izx
fuente
¿Algún firewall en el camino? y pones 192.168.0.4 en todas partes, ¿verdad? Prueba el Firefox de todos modos, incluso si female.wavno funcionó ...
ish
Argh, se me olvidó un paso - por favor agregue esta línea al final de /etc/pulse/system.pa en el cliente : load-module module-native-protocol-tcp auth-anonymous=1; guarde, mate pulseaudio e intente ahora.
ish
Sí, el cliente: la configuración de paprefs en el servidor ya debería haber habilitado eso. Se podría, además, añadirlo al servidor también, no se haga daño ...
ish
@DaveMG: Lo siento, asumí que por ahora habrías descomentado esas dos líneas en el cliente. Lo siento mucho, estaba ocupado durante el último día más o menos y no en. Volveré alrededor de las 11:30 AM JST y podemos reanudar. Mientras tanto, es posible que estos dos vídeos del túnel Default Config he hecho interesante: el tartamudeo , trabajando
ish
Para que lo sepas, edité la respuesta y estoy consolidando los comentarios para que sea un poco más claro para cualquiera que pueda leer esta respuesta (por eso se eliminan mis comentarios). Me preguntaba si la load-module module-native-protocol-tcp auth-anonymous=1;línea /etc/pulse/system.padebería incluirse en la respuesta, o si era parte del proceso de diagnóstico que se puede descartar.
Interrogador el
3

Si el problema es Gnash, aquí está cómo solucionarlo:

Cierre todos los navegadores y ejecute estos comandos:

sudo apt-get purge gnash mozilla-plugin-gnash adobe-flashplugin

entonces este sudo apt-get install adobe-flashplugin

Esto solucionó mis problemas: básicamente elimina todo lo relacionado con Gnash e instala Flash.

Zeitue
fuente
dime si funciona
zeitue
Gracias por las sugerencias. Sin embargo, según mi pregunta actualizada, cambiar el complemento Flash no parece ayudar al problema.
Interrogador
2

Creo que su problema podría estar relacionado con el reproductor flash.

Hay un complemento de FireFox Flash-Aid que instala la versión flash de appx de acuerdo con su entorno.

Searock
fuente
Gracias por el consejo. Lo descargué, lo instalé, probé algunas variaciones diferentes de Flash. Desafortunadamente, el problema del sonido persistente persiste.
Interlocutor
2

Pude solucionar el problema de inversión de color del video desmarcando (deshabilitando) la casilla de verificación Habilitar aceleración de hardware al hacer clic con el botón derecho en Flash Player y hacer clic en Configuración (Actualizar para ver su efecto).

Tengo los mismos problemas de tartamudeo de audio que tú. Funciona inicialmente, luego, después de un tiempo, comienza la tartamudez. Espero que alguien pueda solucionar esto, aunque tengo curiosidad por saber cómo puede evitar el servidor de audio de pulso para obtener sonido (solo estoy usando una computadora portátil sin necesidad de audio de red) .

(Tengo Flash 11.2 r202 en Firefox Kubuntu 12.04 amd64)

pd12
fuente
Gracias por la sugerencia. Intenté habilitar y deshabilitar la aceleración de hardware, pero no parece cambiar nada para mí. Además, no sé qué quieres decir con "omitir el audio del pulso".
Interlocutor
2

¿Tiene instalado MIXX dj Player? A veces se equivoca con el servidor de sonido. Al menos si lo instala, cambiará su tema de sonido predeterminado "ubuntu" a freedesktop.

Puede intentar instalar "Preferencias de PulseAudio" desde el centro de software de Ubuntu.
Hay algunas opciones de configuración relacionadas con la red.

Aprendiz curioso
fuente
1

Tengo el mismo problema y todavía no he encontrado una solución perfecta para el problema. He notado algunas cosas que pueden ayudarte:

1) Me pasa con flash, pero también a veces con la versión html5 de youtube. ¿Esto también te sucede a ti? ( http://www.youtube.com/html5/ puede habilitar la versión html5 de youtube aquí). Esto sugiere que el problema no es exclusivo de flash (¿pero quizás de alguna manera navegadores?)

2) Puedo hacer que el sonido funcione correctamente como usted sin tener que ir al servidor usando pavucontrol configurando el dispositivo de salida en el dispositivo local y luego de vuelta al servidor remoto. Esto resuelve el tartamudeo de audio y pausas aleatorias y saltos de video. Esto, por desgracia, solo funciona hasta que comience el próximo video.

3) Estoy bastante seguro de que, mientras buscaba en Google este problema, me encontré con algunas personas que decían que el problema estaba relacionado con los contadores de reloj del cliente y el servidor no estaba conectado correctamente y eso es lo que se restablece al reiniciar el servidor o volver a conectarse con el cliente (es decir, punto 2). Trataré de desenterrar eso por ti.

No pude encontrar la discusión prometida, pero encontré información de fondo sobre la programación basada en temporizador: http://0pointer.de/blog/projects/pulse-glitch-free.html

HansHarhoff
fuente
¡+1 por dejarme saber que no estoy solo en el universo! Para el punto 1, intenté usar la versión html5 de YouTube mientras intentaba resolver esto, pero los videos no se reprodujeron correctamente y de una manera completamente diferente, así que sentí que no era concluyente (tal vez es un problema diferente). Para el punto 2, eso es interesante, y veré si también funciona para mí. Parece una solución diferente al mismo problema. Y el punto 3 es la información más alentadora, ya que tiene el potencial de comenzar a conducir hacia una explicación real de la causa. ¡Gracias por responder!
Interlocutor
No hay problema. Busqué la información a la que me refería, pero no pude encontrarla nuevamente.
HansHarhoff
1
Publiqué un informe de error en launchpad aquí: bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1030559 Veamos si esto nos da algunos consejos.
HansHarhoff
Agradable. Publiqué un comentario sobre el error, así que espero ser notificado de cualquier actualización. No había publicado mi propio informe de error porque nunca pude descubrir cómo usar Apport de tal manera que pudiera hacer un informe de error cuando no hubo un bloqueo de software en particular.
Interlocutor
1

Estoy realmente contento de haber encontrado esta página finalmente.

He tenido este problema desde muchas versiones de Ubuntu (comenzó a ponerse desagradable cuando se abandonó el padevchooser) y ahora con Arch. La solución para configurar y exportar la variable de entorno PULSE_SERVER antes de iniciar el navegador siempre me ha funcionado bien. No es necesario cambiar nada en el servidor.

Pero hay una cosa que no entiendo: cuando inicio mi navegador (Chromium) desde una terminal dentro del entorno de escritorio, el sonido funciona. Cuando inicio el navegador desde un lanzador (Xfce, Gnome, ...) como debería ser normalmente, los problemas descritos anteriormente están ahí. Creo que eso tiene algo que ver con las variables de entorno X11, pero esto está más allá de mis habilidades.

Para mí, resolví el problema ahora editando mi chromium.desktoparchivo y agregando el Pulse-Server allí:

Exec=sh -c "PULSE_SERVER=mice.local chromium %U"

Armin Hahn
fuente
1

Debe tener estos complementos en Firefox para ejecutar sin problemas cualquier medio. Comprueba cuál tienes y cuál no.

El perfil debería ser este:

Aprendiz curioso
fuente
0

Encontré una solución para corregir la tartamudez mientras usa module-tunnel-sink.

Todo lo que tiene que hacer es descargar Flash Player versión 10.3 (que también tiene soporte de aceleración de hardware, Adobe lo dejó en la versión 11).

Aquí está el binario x86_64

Para instalarlo, extraiga la libflashplayer.sobiblioteca al ~/.mozilla/pluginsdirectorio o cambie el enlace actual usandoupdate-alternatives .

Tenga en cuenta que la versión 10.3 tiene muchas vulnerabilidades de seguridad, por lo que la usa bajo su propio riesgo.

patataj
fuente