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완벽하게 허용됩니다.

관련 정보