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 的设备。看
- https://jamielinux.com/blog/tell-pulseaudio-to-ignore-a-usb-device-using-udev/和
- https://github.com/pulseaudio/pulseaudio/blob/5f727f0faf4c37794da6719941ab975252325888/src/modules/module-udev-detect.c#L453)
我想对于蓝牙,你必须摆弄 bluez,才能忽略该设备。
至于为什么设备会被忽略,这可能是因为当pulseaudio尝试打开它时,它被锁定了(alsa设备只能打开一次)。
来自@blihp 的编辑:
要强制 PulseAudio 尝试使用音频设备,请将条目添加到/etc/pulse/default.pa
:
load-module module-alsa-sink device=plughw:<card#>,<device#>
(替换<card#>,<device#>
为您系统的特定硬件,例如0,1
)