如何强制重新发现 PulseAudio 虚拟声音设备?

Chr*_*ian 8 sound pulseaudio networking avahi

我在家中使用网络声音设备(不是多播/RTP)的 PulseAudio 功能在连接到 HTPC 的音频设备上播放上网本中的声音。这将创建一个虚拟声音设备,然后我可以使用它来代替物理内置设备。大多数时候这工作得很好。然而,有时虚拟声音设备不会出现。断开和重新连接到网络有时会有所帮助,但并非总是如此,这很烦人,并且可能对现有 TCP 连接不利。

所以我的问题基本上是:有没有办法告诉PulseAudio“嘿,如果你真的找不到网络声音设备,那就再看看吧。”?


编辑:卸载和重装module-zeroconf-discoverpacmd不帮助任何,它不会出现是本身的的avahi问题,因为avahi-browse -t --all | grep PulseAudio节目大量的右看的东西,即使在设备未在pavucontrol或上市pacmd list-sinks


编辑 2:我在两个盒子上都使用 Ubuntu 12.04,因为它可能带来的所有不同。

小智 8

  1. 在“接收器”PC(您想在其扬声器上播放声音)上,通过进入终端并发出以下命令来打开 PulseAudio 命令外壳。

    $ pacmd

    您将看到一个带有以下欢迎消息的类似 Python 的 shell。

    Welcome to PulseAudio! Use "help" for usage information. >>>
  2. 通过PulseAudio shell中的命令列出可以在PC上播放声音的设备。
    >>> list-sinks
    现在您将看到所有声音接收器的详细列表。
  3. 只需记下您选择的水槽的完整名称。它会作为声卡的一个属性出现。例如在我的情况下它是:

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

我感兴趣的字符串只是“alsa_output.pci-0000_00_1b.0.analog-stereo”

  1. 现在转到源PC(即音频多媒体流的来源),打开终端并发出以下命令

    $ 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"

    这里192.168.1.105是宿PC的IP地址,“alsa_output.pci-0000_00_1b.0.analog-stereo " 是您刚刚从接收器的终端复制的字符串,而 "home_theater" 只是在您的计算机上调用此虚拟声音输出设备的奇特名称。

  2. 最后通过:Walah选择这个虚拟声音设备
    $ pacmd set-default-sink home_theater


Chr*_*ian 5

一个简单的sudo service avahi-daemon restart方法就可以解决问题,即使avahi-browse在 avahi 重新启动之前就可以看到设备。感谢 Takkat 为我指明了正确的方向。