it-swarm.com.de

Wie kann ich die erneute Erkennung virtueller PulseAudio-Audiogeräte erzwingen?

Ich verwende die PulseAudio-Funktion von Netzwerk-Soundgeräten (nicht Multicast/RTP), um zu Hause Sound von meinem Netbook auf dem an den HTPC angeschlossenen Audiogerät abzuspielen. Dadurch wird ein virtuelles Audiogerät erstellt, das ich anstelle des physischen integrierten Geräts verwenden kann. Meistens funktioniert das einwandfrei. Manchmal wird das virtuelle Audiogerät jedoch einfach nicht angezeigt. Das Trennen und Wiederherstellen der Verbindung zum 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 mitzuteilen, dass "Hey, schau noch einmal, wenn du wirklich kein Netzwerk-Soundgerät finden kannst"?


Edit: Das Entladen und Neuladen des module-zeroconf-discover mit pacmd hilft auch nicht und es scheint kein Avahi zu sein Problem per se, da avahi-browse -t --all | grep PulseAudio viele richtig aussehende Dinge anzeigt, auch wenn die Geräte nicht in pavucontrol oder pacmd list-sinks aufgelistet sind.


Edit 2: Ich benutze Ubuntu 12.04 auf beiden Boxen, um den Unterschied zu machen.

8
Christian

Ein einfacher Sudo service avahi-daemon restart erledigt den Trick, obwohl avahi-browse die Geräte vor diesem avahi-Neustart sieht. Vielen Dank an Takkat, der mich in die richtige Richtung gelenkt hat.

4
Christian
  1. Öffnen Sie auf dem "Sink" -PC (auf dessen Lautsprecher Sie den Sound abspielen möchten) die PulseAudio-Befehls-Shell, indem Sie in 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 über den Befehl in der PulseAudio-Shell den Ton auf dem PC wiedergeben können.
    >>> list-sinks
    Nun sehen Sie eine detaillierte Liste aller Soundsenken.
  3. Notieren Sie sich einfach das vollständige Name der Spüle Ihrer Wahl. Es würde als Attribut der Soundkarte angezeigt. 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 von meinem Interesse ist nur "alsa_output.pci-0000_00_1b.0.analog-stereo"

  1. Gehen Sie nun zum Quell-PC (d. H. 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" die Zeichenfolge, die Sie gerade vom Senken-Terminal kopiert haben, und "home_theater" ist nur ein ausgefallener Name Rufen Sie dieses virtuelle Audioausgabegerät auf Ihrem Computer an.

  2. Wählen Sie schließlich dieses virtuelle Audiogerät aus, indem Sie:
    $ pacmd set-default-sink home_theater

    Wallah !!
6
Rishav Ambasta

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

Ich kann ungelöste Probleme bestätigen Probleme mit einem Avahi-Dienst die manchmal keine Verbindung zu einem PulseAudio-Server herstellen können. Möglicherweise können Sie die Verbindung wiederherstellen, indem Sie entweder das Netzwerk oder den pulseaudio-Server neu starten. Dies funktioniert jedoch nicht immer.

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

Dazu können wir eine entfernte 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 zur Definition der Variablen Pulse_SERVER:

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

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

Bitte folgen Sie auch dem PulseAudio Wiki bei Netzwerkverbindungen .

3
Takkat

Sie können pulseaudio -k versuchen, wodurch der pulseaudio-Dienst beendet wird (er scheint automatisch neu zu starten). Das hat mir schon früher etwas gebracht.

Das andere, was manchmal hilft, ist, die Kästchen in Pulseaudio Preferences (a.k.a. paprefs) zu deaktivieren und dann erneut zu markieren. Kontrollkästchen sind Make discoverable PulseAudio network sound devices available locally in Network Access und Enable network access to local sound devices in Network Server. Offensichtlich funktioniert dies wahrscheinlich nur für die, die Sie verwenden.

1
gib