如何通过DBus获取PulseAudio的源优先级

How to get PulseAudio's source priority via DBus

我正在开发一个 golang 软件,旨在使用 pulseaudio 处理(静音和取消静音)Linux 系统中当前启用的麦克风。

我的软件正在尝试使用 DBUs 界面与 pulseaudio 交互。

如果计算机连接了多个麦克风,我需要通过查看 priority 属性 来源找到启用的麦克风。

例如,这是 pacmd list-sources 命令的修剪输出:

4 source(s) available.
    index: 0
        name: <alsa_output.pci-0000_00_1f.3.analog-stereo.monitor>
...        
        priority: 1030
...
    index: 1
        name: <alsa_input.pci-0000_00_1f.3.analog-stereo>
...
        priority: 9039
...
    index: 2
        name: <combined.monitor>
...
        priority: 1000
...
  * index: 4
        name: <alsa_input.usb-046d_0825_6C7C2E60-02.mono-fallback>
...
        priority: 9040
...

事实上,在我的系统中,索引为 4 的源是活动源。

我的问题:我找不到从 DBUs 界面中获取 priority 属性 的方法。

根据 documentationSourceDevice 对象均未公开名为 Priority 的 属性。 仅有 Priority 字段的对象是 DevicePortCardProfile。我得到了这些属性的值,但它们的值与 pacmd.

的输出不匹配

你知道我是否以及在哪里可以获得优先级值吗?

在撰写本文时,根本不可能获得资源的优先级。

有一个开放的合并请求(由我)添加支持:https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/531

无论如何,这个主题比这更复杂。 为了获得当前系统范围内的活动麦克风,可以使用 FallbackSource 属性,但用户可能已自定义麦克风以供特定应用程序使用,因此一刀切的解决方案并不适用不存在。