J'ai installé raspbian sur mon Pi et configuré un récepteur PulseAudio avec l'intention de diffuser tout l'audio de mon bureau vers un Pi, en pilotant les haut-parleurs.
J'ai suivi cette belle description: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
Au début, cela semblait fonctionner sans problème. Cependant, l'audio envoyé depuis le bureau bégaie constamment sur le Pi, comme s'il y avait des sous-exécutions de tampon constantes avec seulement quelques échantillons manquants entre les deux.
J'ai passé toute la journée à essayer de trouver la cause, mais en vain. La configuration de base est la suivante:
- connexion LAN filaire
- dernière raspbian pi (26 sept. 2013) avec les dernières mises à jour du firmware
- PulseAudio 2.0 des deux côtés (bureau Ubuntu)
- Lecture via mplayer, totem, ffplay
- transmission réseau via module-native-protocol-tcp
Voici ce que j'ai essayé:
- La lecture audio directement sur le Pi fonctionne parfaitement.
- La diffusion sur d'autres ordinateurs (de bureau) fonctionne correctement.
- L'envoi audio avec une connexion directe (en spécifiant $ PULSE_SERVER) fonctionne assez bien avec très peu de bégaiement, mais toujours sujet au problème 2 (voir ci-dessous)
- L'envoi audio via le tunnel PulseAudio de bureau permet un bégaiement constant
- Augmentation des priorités / planification en temps réel ... n'a pas aidé
- Fixer le taux d'échantillonnage à 48 kHz ... n'a pas aidé
- Définir l'algorithme de rééchantillonnage sur "trivial" ... n'a pas aidé
- L'ajustement des fragments par défaut / taille des fragments ... n'a pas aidé
Je ne trouve aucune indication d'un problème dans les journaux PulseAudio (affichés depuis le début de la lecture):
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 ...
Problème 2: comme indiqué ci-dessus, je peux obtenir un son tout à fait correct avec une connexion directe. Cependant, après quelques sauts dans le flux (à l'aide de mplayer), le serveur PulseAudio se bloque et ne lit aucun son du tout. Parfois, il peut être relancé en redémarrant mplayer. Parfois, il se bloque si mal que PulseAudio doit être redémarré. Parfois, il se bloque même lorsque je ne modifie que le volume.
Selon les documents PulseAudio, l'avantage d'une connexion directe sur une connexion tunnelée est d'avoir un meilleur contrôle de la mise en mémoire tampon, ce qui semble indiquer pourquoi j'obtiens un bon son avec la connexion directe: http://www.freedesktop.org/wiki/Software / PulseAudio / Documentation / Utilisateur / Réseau /
Je suis à court d'idées maintenant. Qu'est-ce qui pourrait causer le bégaiement et le problème 2? Une simple idée de la façon de procéder au débogage serait également appréciée.