PulseAudio 如何确定哪些 ALSA 设备可用或不可用?

PulseAudio 如何确定哪些 ALSA 设备可用或不可用?

PulseAudio 通常可以很好地确定可用的 ALSA 设备并自动设置它们。如果没有,我不清楚这种看似自动的联系是如何发生的。是 ALSA 告诉 PulseAudio 有关设备的推送,还是 PulseAudio 根据 ALSA 配置确定的拉取?假设您有 3 个音频“卡”:A、B 和 C。 aplay -l显示所有三个(假设所有三个都通过 aplay 按预期工作),但pacmd list-cards仅显示 A 和 B。如果您只希望 PulseAudio 使用 B 和 C,如何让 PulseAudio 删除 A 并添加 C?我认为这可以通过和/或更改 PA 的启动配置文件来完成pacmd,但我不清楚具体如何执行此操作。

答案1

我认为模块负责添加设备。例如,有一个叫做module-udev-detect,如果我pacmd list-cards在我的系统中这样做,我会看到module-udev-detect.discovered = "1"三个中的两个。第三个是蓝牙设备,所以我猜它来自模块bluez5

稍微查看一下网络,您可以通过设置ENV{PULSE_IGNORE}="1"udev 规则来使pulseaudio 忽略来自 udev 的设备。看

我想对于蓝牙,你必须摆弄 bluez,才能忽略该设备。

至于为什么设备会被忽略,这可能是因为当pulseaudio尝试打开它时,它被锁定了(alsa设备只能打开一次)。

来自@blihp 的编辑:

要强制 PulseAudio 尝试使用音频设备,请将条目添加到/etc/pulse/default.pa

load-module module-alsa-sink device=plughw:<card#>,<device#>

(替换<card#>,<device#>为您系统的特定硬件,例如0,1

相关内容