如何分组设置PulseAudio接收器?

如何分组设置PulseAudio接收器?

我想设置某种虚拟接收器或源组,以便我可以更改多个活动输入流的接收器。到目前为止,我一直在使用以下脚本将所有输入流设置为默认源:

#!/bin/bash
pacmd set-default-sink "$1"
pacmd list-sink-inputs | grep index | while read input
do
  pacmd move-sink-input "${input##* }" "$1"
done

或者仅将输入移动到最后一个默认接收器:

#!/bin/bash
pacmd list-sinks |
grep -e "* index:" |
tr -dc "[:digit:]\n" |
{
  read old_sink
  pacmd set-default-sink "$1"
  pacmd list-sink-inputs  |
  grep -e "index:" -e "sink:" |
  grep -B 1 -e "sink: $old_sink" |
  grep -e "index:" |
  tr -dc "[:digit:]\n" |
  while read i
  do
    pacmd move-sink-input "$i" "$1"
  done
}

然而,这不符合我的需求。类似的解决方案假设我希望指向一个目标接收器的所有输入流移动到另一个目标接收器。我想要一个提供以下行为的解决方案:

# previous state
sourceA -> (virtualSink -> sinkA)
sourceB -> (virtualSink -> sinkA)
sourceC -> sinkA

$ set-sink (virtualSink -> sinkB)
sourceA -> (virtualSink -> sinkB)
sourceB -> (virtualSink -> sinkB)
sourceC -> sinkA

理想情况下,set-sink会将所有活动输入流移动到新接收器,但迭代指向的输入流virtualSink是完全可以接受的。

相关内容