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.
la source
Réponses:
tsched_buffer_size
ettsched_buffer_watermark
étaient les paramètres qui l'ont fait fonctionner pour moi.J'exécute mon PulseAudio en tant qu'instance système, donc la configuration est là
/etc/pulse/system.pa
. Si vous utilisez une instance de session à la place, la configuration sera alors disponible/etc/pulse/default.pa
.C'est la valeur par défaut:
Je l'ai remplacé par ceci: (ie, je l'ai commenté)
J'ai ensuite ajouté la ligne suivante:
Voir http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index6h3
la source
Le point principal est que vous devez utiliser
module-tunnel-sink-new
, mais vous devez également apporter quelques autres modifications pour obtenir un audio réseau sans bégaiement sur le raspberry pi 1.Utilisons le terme expéditeur pour désigner l'ordinateur qui envoie le flux à votre Raspberry Pi.
default-fragments
etdefault-fragment-size-msec
dansdaemon.conf
à l' expéditeur à ces valeurs:module-tunnel-sink-new
en lançant cette commande à l' expéditeur (en supposant que le nom d'hôte de votre raspberry pi est RP1 et que vous avez mDNS travaillant sur votre réseau local. Sinon, utilisez simplement l'adresse IP de votre raspberry pi).Avec ces paramètres, j'obtiens un son sans bégaiement à partir d'un raspberrypi 1 sur un réseau sans fil fonctionnant à 54 Mbps (dans ma configuration, l' expéditeur utilise Ethernet et RP1 utilise WLAN). En fait, cela fonctionne même lorsque l' expéditeur et le raspberrypi utilisent wlan, du moins s'il n'y a pas d'autres appareils sur le réseau sans fil.
la source
tsched=0
, voir wiki.archlinux.org/index.php/PulseAudio/… )avez-vous consulté cette page:
http://manpages.ubuntu.com/manpages/lucid/man5/pulse-daemon.conf.5.html
RÉGLAGES PAR DÉFAUT PAR DÉFAUT
la source
Pour vous débarrasser des problèmes de bégaiement ou de temporisation, essayez une rétrogradation FW:
la source
rpi-update
utilisation de cette manière peut faire à votre système.rpi-update
de cette façon peut faire pour nos systèmes ...J'ai reconnu que ce problème pouvait être lié à la version du noyau. Après la mise à niveau de 3.6.11 vers 3.12.0, je recevais constamment ces sous-exécutions. Un retour à 3.6.11 a résolu le problème pour moi.
la source
J'ai lu cette page plusieurs fois ... J'ai également été frustré par le bégaiement de la combinaison RaspberryPi-pulseaudio-network. J'ai cherché un peu plus et j'ai trouvé une page où j'ai trouvé une partie de la solution:
=> Désactiver le module-suspend-on-idle dans le default.pa (ou system.pa).
Voici, le bégaiement a disparu!
Maintenant, le seul problème est qu'après un certain temps (10 à 20 secondes), la lecture se bloque: - /
Aucune suggestion?
la source