![在 PulseAudio 中获取活动接收器](https://linux22.com/image/162639/%E5%9C%A8%20PulseAudio%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E6%B4%BB%E5%8A%A8%E6%8E%A5%E6%94%B6%E5%99%A8.png)
由于 PulseAudio(令人惊讶的是)不提供任何简单的查询命令,我正在解析输出以pacmd list-sinks
获取活动接收器的索引。但是,我不确定哪些行实际上表明哪个接收器处于活动状态。我知道索引行前面有一个星号,如果它是默认下沉。不过,这似乎与主动接收器不同。当我连接蓝牙扬声器时,所有音频都会经过,尽管如此,接收器 0 仍标记为默认值。播放音频时,输出音频的接收器显示“状态:正在运行”。但一旦播放停止,就会回到暂停状态。
有没有可靠的方法可以找出 PulseAudio 将用于音频的接收器?
答案1
看来我需要对 PulseAudio 术语有更深入的了解。列出源将蓝牙扬声器正确标记为默认值。由于源和接收器显然共享相同的索引,因此我可以传递从pacmd list-sources
to提取的索引号来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 打印该新行的第二个字段(列),用空格分隔,这是活动接收器。