如何分組設定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是完全可以接受的。

相關內容