Ich versuche, eine PulseAudio-Senke auf meinem Raspberry Pi einzurichten, um dort alle Systemsounds von meinem PC zu streamen. Wie geht das am besten?
Ist es zum Beispiel möglich, Filme anzusehen, oder ist die Latenz zu hoch? Ich habe es vor einiger Zeit mit gstreamer versucht, aber mit einer Latenz von ca. 2 Sekunden, was für meine Anforderungen unbrauchbar ist.
Antworten:
Die offiziellen Anweisungen zum Herstellen einer "direkten Verbindung" in einem Netzwerk funktionieren hoffentlich nur für die meisten Leute, aber es scheint, als ob pulseaudio und ich komme nicht so gut zurecht: Es hat Stunden gedauert . [Neben "Direktverbindung" können Sie auch eine "Tunnel" -Methode verwenden, die weiter unten beschrieben wird. Ich empfehle jedoch, diese zuerst zu lesen.]
Ich habe jetzt einen (Fedora 17) Desktop-Streaming-Sound zum pi. Ich habe die
/etc/pulse
Konfigurationsdateien auf beiden Seiten minimiert . Auf der Desktop-Seite:/etc/pulse/client.conf
Die LAN-Adresse meines PIS mit dem Standard-Pulseaudio-Port. Aber hier ist etwas, das mich dann für eine Weile verwirrt hat - mit einem angegebenen Server würde pulseaudio nicht einmal starten:
Es wird im Vordergrund laufen (wahrscheinlich, weil es dann keine pulse-client.conf liest?). Jedoch , wie sich herausstellt, müssen Sie es überhaupt nicht auf dem Desktop (Senden) Seite laufen , etwas , das in den Pulseaudio docs buchstabiert nicht. Wenn Sie
lsof -i -P
es verwenden, erledigen Plugins niedrigerer Ebene für verschiedene Media-Player die Arbeit.Diese eine Zeile "client.conf" ist also eigentlich alles, was Sie auf der Desktop- / Clientseite benötigen, wenn Sie nur das Netzwerk verwenden möchten (siehe jedoch "Noch mehr Komplikationen" weiter unten).
Obwohl der pulseaudio-Daemon (auf der Empfängerseite / Serverseite) als Systemdienst ausgeführt werden kann, empfehlen die Entwickler von pulse , dagegen vorzugehen , und tatsächlich verursacht das Init-Skript auf pi nur eine Warnung: Sie müssen noch starten es selbst. Fedora enthält nicht einmal einen System-Boot-Service-Eintrag dafür.
Daher sollten Sie auf der pi-Seite den so konfigurierten pulseaudio-Serverprozess explizit starten und stoppen:
/etc/pulse/daemon.conf
Sie können -1 verwenden
exit-idle-time
, um den Dämon auf unbestimmte Zeit laufen zu lassen. Beachten Sie, dass dies Sekunden sind und die Standardeinstellung 20 ist (was bedeutet, dass es auf "mysteriöse Weise" stirbt, wenn Sie dies nicht einstellen)./etc/pulse/default.pa
Da dies eine Netzwerk-App ist, ist es keine gute Idee, sie als Root auszuführen. Wie in erwähnt
man pulseaudio
, ist es jedoch auch eine gute Idee, den Prozess zu "erneuern", um ihm eine höhere Priorität zu geben. Sie können diese manuell mitnice
, aber Pulseaudio wird es für root automatisch tun, oder Mitglieder derpulse-rt
Gruppe, wenn die ausführbare Datei „setuid“ ist, dh es ist die Verwendung einiger Wurzel privilleges machen und dann auf die richtige unprivelleged uid herunterschalten (ping
undpasswd
müssen dies auch tun). Also (als root oder sudo):pulse-rt
Wenn pulseaudio auf raspbian installiert ist, wird keine Gruppe erstellt.Dies gibt Ihnen eine gid wie 1003. Fügen Sie (zB) Benutzer pi zu dieser Gruppe hinzu:
Aber auf Raspbian werden Sie immer noch nicht in der Lage sein, als Pi aufzutreten. Fügen Sie dazu Folgendes hinzu
/etc/security/limits.conf
:Sie müssen sich erst anmelden, bevor diese Änderungen vorgenommen werden. wenn du ssh mit dem pi verwendest, benutze einfach
login
. Jetzt können Sie pulseaudio starten und es wird sich -11 erneuern, was wahrscheinlich eine höhere Priorität hat als die meisten anderen Prozesse (siehe den NICE-Wert intop
).Während der Wiedergabe von über das Netzwerk gestreamtem Sound verbraucht pulseaudio auf dem pi etwa 10% der CPU und nur wenig Speicher. :) Es und mein Desktop befinden sich in einem kabelgebundenen LAN. Der Puls überträgt rohe PCM-Daten (glaube ich), sodass die Bandbreitennutzung der Abtastrate der Quelle von 1 kB / s und mehr entspricht. Es gibt leider eine merkliche Verzögerung im Ton, wenn Sie Video ansehen.
Noch mehr Komplikationen ...
Leider funktionierte keine der verschiedenen Soundanwendungen von meinem PC sofort;
mpg123
würde überhaupt nicht laufen. Dafür benötigen Sie auf Fedora dasmpg123-plugins-pulseaudio
Paket. Für Flash-Inhalte im Browser (z. B. youtude) benötigen Siealsa-plugins-pulseaudio
(diese stellen tatsächlich eine Verbindung zum Remote-Server her). Andere Distributionen sollten ähnliche Pakete haben. Wenn Sie bereits pulseaudio verwendet haben (ich war es nicht), haben Sie sie möglicherweise bereits installiert.KDEs Desktop-Schnickschnack funktionierte ebenfalls nicht. Dies ist ein schwieriger zu lösendes Problem, da nach einem lokalen pulseaudio-Server gesucht wird. Wie beschrieben bedeutet die Verwendung einer direkten Verbindung, dass kein Server lokal ausgeführt werden kann. Der Weg dahin ist die Verwendung der "Tunnel" -Methode.
Modul-Tunnel-Senke
Dies ist der andere in den pulseaudio-Dokumenten erwähnte Weg. In diesem Fall wird auf beiden Seiten ein Server ausgeführt, von dem eine Hand zur anderen reicht. Kommentieren Sie dazu den "Standard-Server" aus
/etc/client.conf
und fügen Sie einen lokalen hinzu, der Folgendes/etc/default.pa
enthält:Wenn Sie keinen
sink_name
eingeben, startet pulseaudio nicht. Dassink
bezieht sich auf den Namen der Senke auf der Pi-Seite, die dann auch einen Namen benötigt; eine entsprechende hinzufügensink_name
zu dermodule-alsa-sink
Zeile indefault.pa
dort:Starten Sie den Server auf beiden Seiten und vorab. Während jetzt alles, einschließlich KDE-Pieptöne, übertragen wurde, stotterte die Browser-Flash-Wiedergabe schlecht. Unter einer anderen Desktop-Umgebung (eigentlich nur ein Fenstermanager, fvwm) war dies jedoch in Ordnung.
Ich mag KDE, kann aber ohne Pieptöne leben, daher bleibe ich vorerst bei einer direkten Verbindung.
Fehlerbehebung
Wenn Sie Probleme haben, bietet die Verwendung
pulseaudio -vvvv --log-level=debug
von pi viele Debugging-Meldungen. Als ich anfangs keinen Sound auf dem Pi bekommen konnte, berichtete dies über ein Problem, "das mit einem Fehler im ALSA bcm2835-Treiber zusammenhängt", das mir merkwürdig erschien, da der Sound mit nur alsa in Ordnung war, und ich bin sicher, dass es eine Pi-Software gibt, die davon abhängt auf pulseaudio -apt-get remove pulseaudio
und eine Neuinstallationapt-get install pulseaudio
schien dies zu beheben ... Keine Lösung, die ich gerne sehe, aber hey, zumindest kann ich jetzt Tish hören, ohne Lautsprecher in jede Box stecken zu müssen. Meistens.quelle