在 PulseAudio 中获取活动接收器

在 PulseAudio 中获取活动接收器

由于 PulseAudio(令人惊讶的是)不提供任何简单的查询命令,我正在解析输出以pacmd list-sinks获取活动接收器的索引。但是,我不确定哪些行实际上表明哪个接收器处于活动状态。我知道索引行前面有一个星号,如果它是默认下沉。不过,这似乎与主动接收器不同。当我连接蓝牙扬声器时,所有音频都会经过,尽管如此,接收器 0 仍标记为默认值。播放音频时,输出音频的接收器显示“状态:正在运行”。但一旦播放停止,就会回到暂停状态。

有没有可靠的方法可以找出 PulseAudio 将用于音频的接收器?

答案1

看来我需要对 PulseAudio 术语有更深入的了解。列出源将蓝牙扬声器正确标记为默认值。由于源和接收器显然共享相同的索引,因此我可以传递从pacmd list-sourcesto提取的索引号来pactl set-sink-volume更改音量。因为pactl set-source-volume什么都不做。我真的无法理解它,但它确实有效。

答案2

对我来说,默认接收器似乎与活动接收器相同(如果我只是切换默认值,至少它适用于我的切换)。我知道这不是一个直接的答案,但我确实有一个获取默认接收器的片段,这对我很有用:

pacmd list-sinks | awk '/\*/ {getline; print $2}'获取默认接收器名称。 (周围有<>)

'/\*/ {getline; print $2}':这部分是 awk 命令,这部分的目标是获取活动接收器并获取名称。

/\*/:这意味着 awk 将查找包含星号 (*) 的行。在 pacmd list-sinks 输出中,星号表示默认接收器(当前活动的声音设备)。

{getline; print $2}:这是 awk 在找到包含星号的行时执行的操作。 getline 获取匹配后的下一行, print $2 打印该新行的第二个字段(列),用空格分隔,这是活动接收器。

相关内容