O Flash nos navegadores não reproduz som com precisão usando o áudio da rede Pulse


18

Eu uso o PulseAudio para enviar som pela LAN para um servidor de áudio.

Ao reproduzir qualquer mídia Flash no Firefox ou Chrome, o som vibra (por exemplo ), como se o volume estivesse subindo e descendo a cada segundo.

Descobri que posso interromper a vibração do som se seguir estas etapas:

  • Inicie um vídeo em Flash, como um vídeo no YouTube

  • Executar pulseaudio --killno servidor

  • Aguarde cerca de 7 segundos

Depois disso, o servidor PulseAudio é reiniciado automaticamente e o som no vídeo em Flash é bom.

O problema é que eu tenho que fazer isso toda vez que inicio um vídeo em Flash. Obviamente, isso não é desejável.

Como faço para que o som funcione quando eu passo por essas etapas, para não precisar fazê-las?

Duvido que alguém venha com uma solução imediata e simples (embora isso seja bom), para que a recompensa possa ser aplicada a qualquer pessoa que forneça pelo menos um método de diagonalizar o problema.


Detalhes

Aqui estão as configurações de saída do meu dispositivo de som. Até onde eu sei, todos os quatro dispositivos apontam para exatamente o mesmo dispositivo físico.

definições de som

Saída de log do PulseAudio , obtida ao tentar reproduzir um vídeo em Flash.

Tentei obter detalhes de log do Flash, mas, apesar de instalar e ativar o Flash para depuração, ele não gerou nenhuma saída .

O problema não aparece em nenhum outro software, por isso estou razoavelmente certo de que é específico de como o Flash interage com o som configurado.

Aqui está uma saída de erro que pode ser útil:

$ 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.

Aqui é a saída pactl lista partir do servidor (computador com alto-falantes) .

Aqui é a saída pactl listdo cliente .


Que tipo de conexão de rede existe entre a fonte / coletor?
Ish

@ Izx: Eu não sei o que você quer dizer com "fonte / pia". Se essa é outra maneira de dizer "servidor / cliente", é uma conexão LAN Ethernet. Se for outra coisa, você terá que explicar o que você quer dizer.
Pergunta

Dave, você pode entrar na sala de bate-papo? Eu acho que provavelmente tem uma solução, mas preciso falar ...
ish

Se não, eu apenas significava com ou sem fio e alguns detalhes, por exemplo, com fios = 100 Mbps router, etc, ou sem fios = 802.11g, N, etc.
ish

@ Izx: Oh, entendo. É uma LAN com fio com um roteador entre eles. Eu acredito que é 100MBps. Eu acho que o cliente é capaz de 1 GBps, mas a placa de rede local do servidor ainda é 100 GBps. Se isso for importante e houver um comando que eu possa executar para obter uma velocidade exata, informe-me.
Pergunta

Respostas:


10

Prefácio

Consegui replicar o problema de Dave em experimentos, e eles me levaram a acreditar que o Flash está de alguma forma enviando o som ao PulseAudio de forma a criar muito tráfego de rede (pense em muitos pacotes minúsculos, não na largura de banda); isso sobrecarrega o "túnel" da rede que o PulseAudio criou, ou seja, você

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

Eu poderia resolver o problema colocando o cliente e o servidor em sua própria rede virtual, proporcionando conectividade efetivamente infinitamente rápida (10 Gbits / s) entre eles; obviamente, isso não funciona para redes do mundo real :)

Então, um pouco de pesquisa e este post e este me deram a idéia de largar o túnel (intermediário, como Dave apropriadamente colocou) e fazer com que o cliente falasse diretamente com o servidor, ou seja,

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

E isso funcionou para mim; Vídeos / som em Flash são reproduzidos na perfeição.

Vamos tentar!

Isso pressupõe que seu cliente-servidor esteja em uma rede local (roteador etc.)

  1. Preliminar: Na máquina cliente, se você tiver uma configuração existente, abra paprefse desmarque tudo ; depois mate o PulseAudio para ter certeza.

  2. Na máquina do servidor (ou seja, aquela com os alto-falantes), inicie o PA Preferences ( paprefs) e configure-o da seguinte maneira:

    insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

    • Em seguida, feche-o e mate o PulseAudio em um terminal, como mostrado, aguarde e verifique se ele está escutando agora na porta 4713:

    insira a descrição da imagem aqui

    • Caso não o veja, abra paprefsnovamente e marque as caixas restantes nas guias Acesso à rede e Servidor de rede (elas não machucam)

    • Certifique-se de saber o endereço IP do servidor - use ifconfig, etc. Usaremos 192.168.0.4em nosso exemplo.

  3. Na máquina do cliente, abra um terminal, e testar a nossa conexão direta em primeiro lugar, com um WAV amostra de fala (substitua 192.168 ... com o seu servidor IP!)

    wget http://www.signalogic.com/melp/EngSamples/Orig/female.wav
    paplay --server = 192.168.0.4: 4713 female.wav
    
    • Abortar com Ctrl-C, se funcionar, pode ser chato;)

Agora, feche todas as instâncias do navegador em execução e inicie-a (assumindo o Firefox aqui com a seguinte sintaxe):

PULSE_SERVER=192.168.0.4:4713 firefox &
  • Substitua 192...pelo IP apropriado para o seu servidor!

  • Nessa instância do Firefox, abra o YouTube (ou qualquer outro site de vídeo em Flash) e tente reproduzir os vídeos --- dedos cruzados, ele deve funcionar sem gaguejar / pausar!

Faça ficar

Se você deseja aplicar essa correção a todos os programas, em vez de precisar colocar PULSE_SERVER=192.168.0.4:4713todos os comandos na frente, edite /etc/environmentno cliente e adicione PULSE_SERVER=192.168.0.4:4713uma nova linha no final do arquivo. Adicione também uma quebra de linha no final.

Isso fará com que todo o som do cliente vá para o servidor Pulseaudio, portanto, certifique-se de que é isso que você deseja antes de fazer essa edição no seu /etc/environmentarquivo.

Reinicie e desfrute de uma experiência de áudio incrível. ;)


Algum firewall no caminho? e você coloca 192.168.0.4 em todo lugar, certo? Tente o firefox de qualquer maneira, mesmo female.wavque não funcionou ...
ish

Argh, eu esqueci um passo - por favor, adicione esta linha ao final do /etc/pulse/system.pa no cliente : load-module module-native-protocol-tcp auth-anonymous=1; salve, mate o pulseaudio e tente agora.
Ish

Sim, o cliente - as configurações de paprefs no servidor já devem ter habilitado isso. Você poderia também adicioná-lo para o servidor também, não vai doer ...
ish

@DaveMG: Desculpe, presumi que você teria descomentado essas duas linhas no cliente por enquanto. Sinto muito, estava ocupado durante o último dia ou mais e não. Volto por volta das 11:30 JST e podemos retomar. Entretanto, você pode encontrar estes dois vídeos do túnel default config-I feito interessante: a gagueira , trabalhando
ish

Só para você saber, editei a resposta e estou consolidando os comentários, para que fique um pouco mais claro para quem pode ler essa resposta (é por isso que meus comentários são removidos). Eu estava pensando se a entrada de load-module module-native-protocol-tcp auth-anonymous=1;linha /etc/pulse/system.padeveria ser incluída na resposta ou se fazia parte do processo de diagnóstico que pode ser descartado?
Pergunta

3

Se o problema for o Gnash, aqui está como corrigi-lo:

Feche todos os navegadores e execute estes comandos:

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

então este sudo apt-get install adobe-flashplugin

isso corrigiu meus problemas: basicamente ele remove tudo relacionado ao Gnash e instala o Flash.


me diga se ele funciona
zeitue

Obrigado pelas sugestões. Conforme minha pergunta atualizada, porém, alterar o plug-in do Flash não parece ajudar no problema.
Question

2

Eu acho que seu problema pode estar relacionado ao flash player.

Existe um plug - in do FireFox Flash-Aid que instala a versão flash do appx de acordo com o seu ambiente.


Obrigado pela dica. Baixei, instalei, tentei algumas variações diferentes do Flash. Infelizmente, o problema do som pulsante persiste.
Question

2

Consegui corrigir o problema de inversão de cores do vídeo desmarcando (desabilitando) a caixa de seleção Ativar aceleração de hardware quando você clica com o botão direito do mouse no flash player e clique em Configurações (Atualizar para ver seu efeito).

Eu tenho os mesmos problemas de gagueira do áudio que você. Funciona inicialmente e, depois de um tempo, a gagueira entra em ação. Espero que alguém possa consertar isso - embora eu esteja curioso para saber como você pode ignorar o servidor de áudio de pulso para obter som (estou apenas usando um laptop sem necessidade de áudio de rede) .

(Eu tenho o Flash 11.2 r202 no Firefox Kubuntu 12.04 amd64)


Obrigado pela sugestão. Tentei ativar e desativar a aceleração de hardware, mas isso não parece mudar nada para mim. Além disso, não sei o que você quer dizer com "ignorar o áudio do pulso".
Pergunta

2

Você tem o MIXX dj Player instalado? Às vezes, atrapalha o servidor de som. Pelo menos, se você o instalar, ele mudará o tema padrão do som "ubuntu" para freedesktop.

Você pode tentar instalar "PulseAudio Preferences" no centro de software Ubuntu.
Existem algumas opções de configuração relacionadas à rede.


1

Eu tenho o mesmo problema e ainda não encontrei uma solução perfeita para o problema. Percebi algumas coisas que podem ajudá-lo:

1) Isso acontece comigo com flash, mas também às vezes com a versão html5 do youtube. Isso também acontece para você? ( http://www.youtube.com/html5/, você pode ativar a versão html5 do youtube aqui). Isso sugere que o problema não é exclusivo do flash (mas talvez de alguma forma, navegadores?)

2) Consigo que o som funcione corretamente como você sem ir ao servidor usando o pavucontrol configurando o dispositivo de saída para o dispositivo local e depois voltando ao servidor remoto. Isso resolve a gagueira do áudio e pausas aleatórias e pula o vídeo. Infelizmente, isso só funciona até o próximo vídeo começar.

3) Tenho certeza de que, enquanto pesquisava esse problema, encontrei algumas pessoas dizendo que o problema estava relacionado aos contadores de relógio do cliente e ao servidor não estar vinculado corretamente e é isso que é redefinido ao reiniciar o servidor ou reconectar-se ao cliente (ou seja, ponto 2). Vou tentar descobrir isso para você.

Não encontrei a discussão prometida, mas encontrei algumas informações básicas sobre o agendamento com base no cronômetro: http://0pointer.de/blog/projects/pulse-glitch-free.html


+1 por me avisar que não estou sozinho no universo! Para o ponto 1, tentei usar a versão html5 do YouTube enquanto tentava resolver isso, mas os vídeos não eram reproduzidos corretamente e de uma maneira totalmente diferente, então achei que era meio inconclusivo (talvez seja um problema diferente). Para o ponto 2, isso é interessante, e vou ver se funciona para mim também. Parece uma solução alternativa diferente para o mesmo problema. E o ponto 3 é a informação mais encorajadora, pois tem o potencial de começar a levar a uma explicação real da causa. Obrigado por responder!
Pergunta

Sem problemas. Procurei as informações às quais me referia, mas não consegui encontrá-las novamente.
21712 HansHarhoff

11
Publiquei um relatório de bug na barra de ativação aqui: bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1030559 Vamos ver se isso nos dá algumas dicas.
21712 HansHarhoff

Agradável. Eu postei um comentário sobre o bug, então espero ser notificado de quaisquer atualizações. Eu não havia publicado meu próprio relatório de erro, porque nunca consegui descobrir como usar o Apport de forma a poder fazer um relatório de erro quando não havia uma falha específica no software.
Interlocutor

1

Estou muito feliz por ter encontrado esta página finalmente.

Eu tive esse problema desde muitas versões do Ubuntu (ele começou a ficar desagradável quando o padevchooser foi abandonado) e agora com o Arch. A solução para definir e exportar a variável de ambiente PULSE_SERVER antes de iniciar o navegador sempre funcionou bem para mim. Não é necessário alterar nada no servidor.

Mas há uma coisa que não entendo: quando inicio o navegador (Chromium) a partir de um terminal dentro do ambiente de área de trabalho, o som funciona. Quando inicio o navegador a partir de um iniciador (Xfce, Gnome, ...) como deveria ser normalmente, os problemas descritos acima estão lá. Eu acho que isso tem algo a ver com variáveis ​​de ambiente X11, mas isso está além das minhas habilidades.

Para mim, resolvi o problema agora editando meu chromium.desktoparquivo e adicionando o Pulse-Server lá:

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


1

Você precisa desses plugins no firefox para executar qualquer mídia na perfeição. Verifique qual você tem e qual não tem.

O perfil deve ser este:


0

Encontrei uma solução para corrigir a gagueira enquanto usava module-tunnel-sink.

Tudo o que você precisa fazer é baixar o Flash Player versão 10.3 (que também possui suporte à aceleração de hardware, a Adobe lançou na versão 11).

Aqui está o binário x86_64

Para instalá-lo, extraia a libflashplayer.sobiblioteca para o ~/.mozilla/pluginsdiretório ou altere o link atual usando update-alternatives.

Esteja ciente de que a versão 10.3 possui muitas vulnerabilidades de segurança, portanto você a utiliza por seu próprio risco.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.