Instalei o raspbian no meu Pi e configurei um coletor PulseAudio com a intenção de transmitir todo o áudio da minha área de trabalho para um Pi, acionando os alto-falantes.
Eu segui essa boa descrição: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
A princípio, isso pareceu funcionar sem problemas. No entanto, o áudio enviado da área de trabalho está constantemente gaguejando no Pi, como se houvesse constantes interrupções de buffer com apenas algumas amostras ausentes no meio.
Passei o dia inteiro tentando encontrar a causa, mas sem sucesso. A configuração básica é:
- conexão LAN com fio
- raspbian pi mais recente (26 de setembro de 2013) com as atualizações de firmware mais recentes
- PulseAudio 2.0 em ambos os lados (desktop Ubuntu)
- Reprodução através de mplayer, totem, ffplay
- transmissão de rede via module-native-protocol-tcp
Isto é o que eu tentei:
- A reprodução de áudio diretamente no Pi funciona perfeitamente.
- A transmissão para outros computadores (desktop) funciona bem.
- O envio de áudio com uma conexão direta (especificando $ PULSE_SERVER) funciona muito bem com muito pouca gagueira, mas ainda propenso ao Problema-2 (veja abaixo)
- O envio de áudio via tunelamento PulseAudio da área de trabalho oferece gagueira constante
- Aumentar prioridades / agendamento em tempo real ... não ajudou
- Fixar a taxa de amostragem para 48 kHz ... não ajudou
- Definir o algoritmo de reamostragem como "trivial" ... não ajudou
- Ajustar fragmentos padrão / tamanho do fragmento ... não ajudou
Não consigo encontrar nenhuma indicação de problema nos logs do PulseAudio (mostrados a partir do momento em que iniciei a reprodução):
D: [alsa-sink] protocol-native.c: Requesting rewind due to end of underrun. D: [alsa-sink] sink-input.c: Requesting rewind due to uncorking D: [pulseaudio] sink.c: Suspend cause of sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo is 0x0000, resuming I: [alsa-sink] alsa-sink.c: Trying resume... I: [alsa-sink] alsa-util.c: cannot disable ALSA period wakeups D: [alsa-sink] alsa-util.c: Maximum hw buffer size is 341 ms D: [alsa-sink] alsa-util.c: Set buffer size first (to 16384 samples), period size second (to 16384 samples). I: [alsa-sink] alsa-util.c: ALSA period wakeups were not disabled D: [alsa-sink] alsa-sink.c: Latency set to 25.00ms D: [alsa-sink] alsa-sink.c: hwbuf_unused=60736 D: [alsa-sink] alsa-sink.c: setting avail_min=15665 I: [alsa-sink] alsa-sink.c: Time scheduling watermark is 15.00ms I: [alsa-sink] alsa-sink.c: Resumed successfully... I: [alsa-sink] alsa-sink.c: Starting playback. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes busy. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] ratelimit.c: 115 events suppressed D: [alsa-sink] alsa-sink.c: Wakeup from ALSA! ... no more output, but stuttering continues ...
Problema 2: como dito acima, posso obter um áudio bastante bom com uma conexão direta. No entanto, após alguns pulos no fluxo (usando o mplayer), o servidor PulseAudio trava e não reproduz nenhum áudio. Às vezes, pode ser revivido reiniciando o mplayer. Às vezes, ele trava tanto que o PulseAudio precisa ser reiniciado. Às vezes, até trava quando apenas altero o nível do volume.
De acordo com os documentos do PulseAudio, a vantagem de uma conexão direta sobre uma conexão com túnel é ter um melhor controle de buffer, o que parece indicar por que obtenho um bom áudio com a conexão direta: http://www.freedesktop.org/wiki/Software / PulseAudio / Documentação / Usuário / Rede /
Estou sem idéias agora. O que poderia causar a gagueira e o Problema 2? Apenas uma idéia de como proceder a depuração também seria apreciada.
fonte
Respostas:
tsched_buffer_size
etsched_buffer_watermark
foram as configurações que fizeram o trabalho para mim.Eu executar o meu PulseAudio como uma instância do sistema, de modo que a configuração está em
/etc/pulse/system.pa
. Se você estiver usando uma instância de sessão em vez disso, em seguida, a configuração estará em/etc/pulse/default.pa
.Este é o padrão:
Substituí-o por: (isto é, comentei)
Então eu adicionei a seguinte linha:
Consulte http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index6h3
fonte
O ponto principal é que você deve usá-lo
module-tunnel-sink-new
, mas também deve fazer algumas outras alterações para obter um áudio de rede sem interrupções no raspberry pi 1.Vamos usar o termo remetente para indicar o computador que envia o fluxo ao seu raspberry pi.
default-fragments
edefault-fragment-size-msec
emdaemon.conf
pelo remetente para estes valores:module-tunnel-sink-new
emitindo este comando no remetente (assumindo que o nome do host do seu raspberry pi seja RP1 e você tenha o mDNS trabalhando em sua rede local. Caso contrário, basta usar o endereço IP do seu raspberry pi).Com essas configurações, eu recebo áudio sem interrupções de um raspberrypi 1 em uma rede sem fio operando a 54 Mbps (Na minha configuração, o remetente usa ethernet e o RP1 está usando wlan). Na verdade, funciona mesmo quando o remetente e o raspberrypi estão usando a WLAN, pelo menos se não houver outros dispositivos na rede sem fio.
fonte
tsched=0
, consulte wiki.archlinux.org/index.php/PulseAudio/… )você consultou esta página:
http://manpages.ubuntu.com/manpages/lucid/man5/pulse-daemon.conf.5.html
CONFIGURAÇÕES DE FRAGMENTO PADRÃO
fonte
Para se livrar de problemas de gagueira ou de tempo limite, tente um downgrade do FW:
fonte
rpi-update
uso dessa maneira pode fazer ao seu sistema.rpi-update
desta forma pode fazer para os nossos sistemas de ...Reconheci que esse problema pode estar relacionado à versão do kernel. Depois de atualizar de 3.6.11 para 3.12.0, recebi constantemente essas falhas. Um downgrade de volta para 3.6.11 resolveu o problema para mim.
fonte
Estive lendo esta página algumas vezes ... Também fiquei frustrado com a gagueira da combinação RaspberryPi-pulseaudio-network. Pesquisei um pouco mais e encontrei uma página em que encontrei parte da solução:
=> Desative o módulo suspenso no modo inativo no default.pa (ou system.pa).
Eis que a gagueira desapareceu!
Agora, o único problema é que, depois de um tempo (10 a 20 segundos), a reprodução trava: - /
Alguma sugestão?
fonte