He instalado raspbian en mi Pi y configuré un receptor PulseAudio con la intención de transmitir todo el audio de mi escritorio a un Pi, conduciendo los altavoces.
Seguí esta bonita descripción: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
Al principio, esto parecía funcionar sin problemas. Sin embargo, el audio enviado desde el escritorio está tartamudeando constantemente en el Pi, como si hubiera subestimaciones constantes del búfer con solo algunas muestras faltantes en el medio.
Pasé todo el día tratando de encontrar la causa, pero fue en vano. La configuración básica es:
- conexión LAN cableada
- raspbian pi más reciente (26 de septiembre de 2013) con las últimas actualizaciones de firmware
- PulseAudio 2.0 en ambos lados (escritorio Ubuntu)
- Reproducción a través de mplayer, totem, ffplay
- transmisión de red a través de module-native-protocol-tcp
Esto es lo que probé:
- Reproducir audio directamente en el Pi funciona perfectamente.
- La transmisión a otras computadoras (de escritorio) funciona bien.
- El envío de audio con una conexión directa (especificando $ PULSE_SERVER) funciona bastante bien con muy poco tartamudeo, pero sigue siendo propenso al problema 2 (ver más abajo)
- El envío de audio a través del túnel de PulseAudio en el escritorio proporciona un tartamudeo constante
- El aumento de prioridades / programación en tiempo real ... no ayudó
- Fijar la frecuencia de muestreo a 48 kHz ... no ayudó
- Establecer el algoritmo de remuestreo en "trivial" ... no ayudó
- Ajustar fragmentos predeterminados / tamaño de fragmento ... no ayudó
No puedo encontrar ninguna indicación de un problema en los registros de PulseAudio (que se muestran desde el momento en que comencé la reproducción):
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 se dijo anteriormente, puedo obtener un audio bastante bueno con una conexión directa. Sin embargo, después de algunos saltos dentro de la transmisión (usando mplayer), el servidor PulseAudio se cuelga y no reproduce ningún audio. A veces se puede revivir reiniciando mplayer. A veces se cuelga tanto que PulseAudio tiene que reiniciarse. A veces incluso se cuelga cuando solo cambio el nivel de volumen.
Según los documentos de PulseAudio, la ventaja de una conexión directa sobre una conexión en túnel es tener un mejor control de almacenamiento en búfer, lo que parece indicar por qué obtengo un buen audio con la conexión directa: http://www.freedesktop.org/wiki/Software / PulseAudio / Documentation / User / Network /
Estoy sin ideas ahora. ¿Qué podría causar la tartamudez y el problema 2? Solo una idea de cómo proceder a la depuración también sería apreciada.