Ho installato raspbian sul mio Pi e configurato un sink PulseAudio con l'intenzione di trasmettere in streaming tutto l'audio dal mio desktop a un Pi, guidando gli altoparlanti.
Ho seguito questa bella descrizione: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
Inizialmente, questo sembrava funzionare senza problemi. Tuttavia, l'audio inviato dal desktop sta costantemente balbettando sul Pi, come se ci fossero dei buffer underrun costanti con solo alcuni campioni mancanti nel mezzo.
Ho passato l'intera giornata a cercare la causa, ma senza successo. L'impostazione di base è:
- connessione LAN cablata
- raspbian pi più recente (26 settembre 2013) con gli ultimi aggiornamenti del firmware
- PulseAudio 2.0 su entrambi i lati (desktop Ubuntu)
- Riproduzione tramite mplayer, totem, ffplay
- trasmissione di rete tramite module-native-protocol-tcp
Questo è quello che ho provato:
- La riproduzione audio direttamente sul Pi funziona perfettamente.
- Lo streaming su altri computer (desktop) funziona correttamente.
- L'invio di audio con una connessione diretta (specificando $ PULSE_SERVER) funziona abbastanza bene con una balbuzie molto ridotta, ma è ancora soggetto al Problema-2 (vedi sotto)
- L'invio di audio tramite il tunneling PulseAudio desktop garantisce una balbuzie costante
- L'aumento delle priorità / programmazione in tempo reale ... non ha aiutato
- Fissare la frequenza di campionamento a 48 kHz ... non ha aiutato
- L'impostazione dell'algoritmo di ricampionamento su "banale" ... non ha aiutato
- La regolazione di default-fragments / fragment-size ... non ha aiutato
Non riesco a trovare alcuna indicazione di un problema nei registri PulseAudio (mostrati da quando ho iniziato la riproduzione):
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: come detto sopra, posso ottenere un audio abbastanza buono con una connessione diretta. Tuttavia, dopo alcuni salti all'interno dello stream (usando mplayer), il server PulseAudio si blocca e non riproduce alcun audio. A volte può essere ripristinato riavviando mplayer. A volte si blocca così tanto che è necessario riavviare PulseAudio. A volte si blocca anche quando cambio solo il livello del volume.
Secondo i documenti PulseAudio, il vantaggio di una connessione diretta su una connessione sintonizzata è di avere un migliore controllo del buffering, il che sembra indicare perché ottengo un buon audio con la connessione diretta: http://www.freedesktop.org/wiki/Software / PulseAudio / Documentazione / utente / rete /
Sono senza idee ora. Cosa potrebbe causare la balbuzie e il problema 2? Anche un'idea su come procedere al debug sarebbe apprezzata.