Ich habe Raspbian auf meinem Pi installiert und eine PulseAudio-Senke konfiguriert, um alle Audiodaten von meinem Desktop auf einen Pi zu streamen und die Lautsprecher anzutreiben.
Ich folgte dieser schönen Beschreibung: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
Zunächst schien dies ohne Probleme zu funktionieren. Das vom Desktop gesendete Audio stottert jedoch ständig auf dem Pi, als ob es konstante Pufferunterläufe gäbe, wobei nur ein paar Samples dazwischen fehlen.
Ich habe den ganzen Tag versucht, die Ursache zu finden, aber ohne Erfolg. Das Grundsetup ist:
- Kabelgebundene LAN-Verbindung
- Neueste Raspbian Pi (26. September 2013) mit den neuesten Firmware-Updates
- PulseAudio 2.0 auf beiden Seiten (Ubuntu-Desktop)
- Wiedergabe über mplayer, totem, ffplay
- netzwerkübertragung via module-native-protocol-tcp
Das habe ich versucht:
- Das Abspielen von Audio direkt auf dem Pi funktioniert einwandfrei.
- Das Streamen auf andere (Desktop-) Computer funktioniert einwandfrei.
- Das Senden von Audiodaten mit einer direkten Verbindung (Angabe von $ PULSE_SERVER) funktioniert recht gut mit sehr wenig Ruckeln, ist aber immer noch anfällig für Problem-2 (siehe unten).
- Senden von Audio über den Desktop PulseAudio-Tunneln sorgt für ein konstantes Ruckeln
- Erhöhen der Prioritäten / Echtzeitplanung ... hat nicht geholfen
- Die Abtastrate auf 48 kHz festzulegen ... hat nicht geholfen
- Das Setzen des Resampling-Algorithmus auf "trivial" ... hat nicht geholfen
- Das Anpassen von Standard-Fragmenten / Fragment-Größe ... hat nicht geholfen
Ich kann keine Hinweise auf ein Problem in den PulseAudio-Protokollen finden (angezeigt ab dem Zeitpunkt, an dem ich mit der Wiedergabe begonnen habe):
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 ...
Problem 2: Wie oben gesagt, kann ich mit einer direkten Verbindung ganz ok Audio bekommen. Nach einigen Sprüngen im Stream (mit mplayer) bleibt der PulseAudio-Server jedoch hängen und gibt überhaupt kein Audio wieder. Manchmal kann es durch einen Neustart von mplayer wiederbelebt werden. Manchmal hängt es so stark, dass PulseAudio neu gestartet werden muss. Manchmal hängt es sogar, wenn ich nur die Lautstärke ändere.
Laut den PulseAudio-Dokumenten besteht der Vorteil einer direkten Verbindung gegenüber einer getunnelten Verbindung in einer besseren Puffersteuerung. Dies scheint darauf hinzudeuten, warum ich mit der direkten Verbindung gute Audiodaten erhalte: http://www.freedesktop.org/wiki/Software / PulseAudio / Dokumentation / Benutzer / Netzwerk /
Ich habe jetzt keine Ideen mehr. Was könnte das Ruckeln und Problem 2 verursachen? Nur eine Idee, wie das Debuggen weitergehen soll, wäre ebenfalls wünschenswert.
quelle
Antworten:
tsched_buffer_size
undtsched_buffer_watermark
waren die Einstellungen, die es für mich arbeiten ließen.Ich führe mein PulseAudio als Systeminstanz aus, die Konfiguration befindet sich also in
/etc/pulse/system.pa
. Wenn Sie stattdessen eine Sitzungsinstanz verwenden, befindet sich die Konfiguration in/etc/pulse/default.pa
.Dies ist die Standardeinstellung:
Ich habe es durch folgendes ersetzt: (dh auskommentiert)
Dann habe ich folgende Zeile hinzugefügt:
Siehe http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index6h3
quelle
Der wichtigste Punkt ist, dass Sie verwenden müssen
module-tunnel-sink-new
, aber Sie müssen auch ein paar andere Änderungen vornehmen, um ruckelfreies Netzwerk-Audio auf dem Himbeer-Pi 1 zu erhalten.Verwenden wir den Begriff Absender , um den Computer zu bezeichnen, der den Stream an Ihren Himbeer-Pi sendet.
default-fragments
unddefault-fragment-size-msec
indaemon.conf
an Absender auf diese Werte:module-tunnel-sink-new
diesen Befehl beim Absender (vorausgesetzt, der Hostname Ihres Himbeer-Pi ist RP1 und Sie haben mDNS in Ihrem lokalen Netzwerk. Andernfalls verwenden Sie einfach die IP-Adresse Ihres Himbeer-Pi).Mit diesen Einstellungen erhalte ich ruckelfreies Audio von einem Raspberrypi 1 über ein drahtloses Netzwerk mit einer Geschwindigkeit von 54 Mbit / s (In meinem Setup verwendet der Absender Ethernet und RP1 verwendet WLAN). Tatsächlich funktioniert es sogar, wenn sowohl der Absender als auch raspberrypi wlan verwenden, zumindest wenn sich keine anderen Geräte im drahtlosen Netzwerk befinden.
quelle
tsched=0
, siehe wiki.archlinux.org/index.php/PulseAudio/… )Hast du diese Seite überprüft:
http://manpages.ubuntu.com/manpages/lucid/man5/pulse-daemon.conf.5.html
STANDARD FRAGMENT EINSTELLUNGEN
quelle
Versuchen Sie ein FW-Downgrade, um Stottern oder Timeout-Probleme zu vermeiden:
quelle
rpi-update
Auswirkungen diese Vorgehensweise auf Ihr System haben kann.rpi-update
auf diese Weise mit unseren SystemenIch habe erkannt, dass dieses Problem möglicherweise mit der Kernel-Version zusammenhängt. Nach dem Upgrade von 3.6.11 auf 3.12.0 habe ich ständig diese Unterschreitungen erhalten. Ein Downgrade auf 3.6.11 löste das Problem für mich.
quelle
Ich habe diese Seite ein paar Mal gelesen ... Ich war auch frustriert über das Stottern der RaspberryPi-Pulseaudio-Netzwerkkombination. Ich habe ein bisschen mehr gesucht und eine Seite gefunden, auf der ich einen Teil der Lösung gefunden habe:
=> Deaktiviere das Modul-Suspend-On-Idle in der default.pa (oder system.pa).
Siehe, das Stottern ist verschwunden!
Jetzt ist das einzige Problem, dass die Wiedergabe nach einer Weile (10 bis 20 Sekunden) hängen bleibt: - /
Irgendwelche Vorschläge?
quelle