Wie kann ich die Wiederentdeckung von virtuellen PulseAudio-Soundgeräten erzwingen?


8

Ich verwende die PulseAudio-Funktion von Netzwerk-Soundgeräten (nicht Multicast / RTP), um zu Hause Sound von meinem Netbook auf den an den HTPC angeschlossenen Audiogeräten abzuspielen. Dadurch wird ein virtuelles Soundgerät erstellt, das ich anstelle des physischen integrierten Geräts verwenden kann. Meistens funktioniert das ganz gut. Manchmal wird das virtuelle Audiogerät jedoch einfach nicht angezeigt. Das Trennen und erneute Verbinden mit dem Netzwerk hilft manchmal, aber nicht immer, und es ist ärgerlich und möglicherweise schlecht für vorhandene TCP-Verbindungen.

Meine Frage lautet also im Grunde: Gibt es eine Möglichkeit, PulseAudio zu sagen: "Hey, schauen Sie noch einmal nach, wenn Sie wirklich kein Netzwerk-Soundgerät finden."


Edit: Das Entladen und das Nachladen module-zeroconf-discovermit pacmdnicht hilft entweder und es nicht scheint ein avahi Problem per se da avahi-browse -t --all | grep PulseAudiozeigt viele rechts suchen Sachen, auch wenn die Geräte nicht in pavucontrol notiert sind oder pacmd list-sinks.


Edit 2: Ich verwende Ubuntu 12.04 auf beiden Boxen für den Unterschied, den es machen könnte.


Wenn Sie Informationen vermissen, um hilfreiche Kommentare oder sogar eine Antwort zu geben, teilen Sie mir dies bitte mit.
Christian

Antworten:


7
  1. Öffnen Sie auf dem PC "Sink" (auf dessen Lautsprecher Sie den Sound abspielen möchten) die PulseAudio-Befehlsshell, indem Sie in das Terminal gehen und den folgenden Befehl eingeben.

    $ pacmd

    Sie sehen eine Python-ähnliche Shell mit der folgenden Begrüßungsnachricht.

    Welcome to PulseAudio! Use "help" for usage information. >>>
  2. Listen Sie die Geräte auf, die den Sound auf dem PC mit dem Befehl in der PulseAudio-Shell abspielen können.
    >>> list-sinks
    Jetzt sehen Sie eine detaillierte Liste aller Soundsenken.
  3. Notieren Sie sich einfach den vollständigen Namen der Spüle Ihrer Wahl. Es würde als Attribut der Soundkarte erscheinen. In meinem Fall ist es zum Beispiel:

    1 sink(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
    ...

Die Zeichenfolge meines Interesses ist nur "alsa_output.pci-0000_00_1b.0.analog-stereo".

  1. Gehen Sie nun auf den Quell-PC (dh den Ursprung der Audio-Multimedia-Streams), öffnen Sie das Terminal und geben Sie den folgenden Befehl ein.

    $ pactl load-module module-tunnel-sink "server=192.168.1.105 sink=alsa_output.pci-0000_00_1b.0.analog-stereo sink_name=home_theater"

    Hier ist 192.168.1.105 die IP-Adresse des Senken-PCs "alsa_output.pci-0000_00_1b.0.analog-stereo" "ist die Zeichenfolge, die Sie gerade vom Terminal der Senke kopiert haben, und" home_theater "ist nur ein ausgefallener Name, um dieses virtuelle Soundausgabegerät auf Ihrem Computer aufzurufen.

  2. Schließlich wählen Sie dieses virtuelle Soundgerät aus:
    $ pacmd set-default-sink home_theater

    Wallah !!

Hat für mich funktioniert - funktioniert auch mit dem neuen Tunnelsenkenmodul und nur mit der Host-IP-Adresse der Senke, ohne dass die genaue Senke angegeben werden muss (ich verwende nur eine auf diesem Raspberry Pi, der an meine Stereoanlage angeschlossen ist, daher ist dies nicht erforderlich): 'pactl Lademodul Modul-Tunnel-Senke-neuer Server = [2001: 470: ca90: 4: ba27: ebff: fee2: ada9] '- danke!
Jean-Marc Liotier

4

Ein einfacher sudo service avahi-daemon restartmacht den Trick, obwohl avahi-browsesieht die Geräte vor diesem Avahi-Neustart. Vielen Dank an Takkat, der mich in die richtige Richtung gelenkt hat.


3

Diese Antwort ist ungetestet und funktioniert möglicherweise nicht, führt Sie jedoch möglicherweise in die richtige Richtung.

Ich kann ungelöste Probleme mit einem Avahi-Dienst bestätigen , der manchmal keine Verbindung zu einem PulseAudio-Server herstellen kann. Möglicherweise können wir die Verbindung wieder herstellen, indem wir entweder das Netzwerk oder den Pulseaudio-Server neu starten. Leider funktioniert dies nicht immer.

Um dieses Problem zu beheben, versuchen wir möglicherweise, einen Netzwerk-Audio-Stream mithilfe des nativen TCP-Protokolls einzurichten, um direkt auf die IP zu streamen, anstatt eine Avahi-Namensauflösung zu verwenden.

Dazu können wir eine Remote-Senke tunneln, indem wir die Modul-Tunnel-Senke auf der Empfängerseite laden . Auf dem Absender müssen wir das native TCP-Protokoll aktivieren, indem wir module-native-protocol-tcp laden .

Siehe auch diese Frage zur Terminologie und zum Definieren der PULSE_SERVERVariablen:

So setzen Sie die PulseAudio-Standardsenke beim Booten automatisch auf den Remote-Server - Ubuntu 9.04

Es ist eine ziemlich alte Frage für Ubuntu 9.04, aber an meiner bekannten Terminologie und Prozedur haben sich seitdem nicht viel geändert.

Bitte folgen Sie auch dem PulseAudio-Wiki zu Netzwerkverbindungen .


Danke für den einen Link. Die Lösung dort funktioniert auch in meinem Fall tatsächlich: sudo service avahi-daemon restartIch habe das nicht erwartet, weil avahi-browsedie Geräte bereits vor dem Neustart angezeigt werden, aber ich denke, der Neustart löst einen erneuten Aufruf des Rückrufs aus, was alles ist, was benötigt wird.
Christian

@ Christian: Gut, es hat geholfen. Ich habe Avahi vorerst aufgegeben.
Takkat

Ich bin mir nicht sicher, ob ich Ihren Vorschlag verstanden habe. Kann ich die DNS-Namensauflösung verwenden oder muss ich die IP kennen? Ich würde lieber keine festen IPs verwenden, obwohl Sie im Falle des HTPC sagen könnten, dass dies in Ordnung ist.
Christian

1
Ja, ich kann verstehen warum. Ich habe gerade meine eigene Antwort geschrieben, weil es für Leute, die über diese Frage stolpern, weil sie das gleiche Problem haben, die einfachste Lösung zu sein scheint.
Christian

1

Sie könnten versuchen pulseaudio -k, den Pulseaudio-Dienst zu beenden (er scheint automatisch neu zu starten). Das hat mir schon früher etwas gebracht.

Die andere Sache, die manchmal hilft, ist das Deaktivieren und erneutes Aktivieren der Kontrollkästchen in Pulseaudio Preferences(aka paprefs). Kontrollkästchen sind Make discoverable PulseAudio network sound devices available locallyin Network Accessund Enable network access to local sound devicesin Network Server. Offensichtlich funktioniert dies wahrscheinlich nur für den, den Sie verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.