@ Teresa-e-Junior가 지적했듯이 다음 pactl
과 같은 도구를 사용할 수 있습니다.
우선 PA 싱크의 ID를 얻고 싶을 수도 있습니다. 내 시스템에서 이것은 내가 얻는 것입니다.
$ pactl list short sinks
0 alsa_output.pci-0000_01_00.1.hdmi-surround module-alsa-card.c s16le 6ch 44100Hz SUSPENDED
1 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING
싱크 1은 현재 기본 싱크입니다.
그러나 이제는 현재와 미래의 모든 스트림을 HDMI (예 : 싱크 0)를 통해 재생하려고합니다.
PulseAudio의 기본 싱크를 설정하는 명령이 있지만 PC에 영향을 미치지 않는 것 같습니다.
$ pacmd set-default-sink 0 #doesn't work on my PC :(
대신 새로운 스트림이 가장 최근에 스트림을 이동 한 싱크에 연결되어있는 것 같습니다.
pactl에게 현재 재생중인 모든 스트림을 싱크로 이동 시키라고하자 0
. 먼저 다음을 나열해야합니다.
$ pactl list short sink-inputs
290 1 176 protocol-native.c float32le 2ch 44100Hz
295 1 195 protocol-native.c float32le 2ch 44100Hz
좋습니다 1
. 싱크에 연결된 두 개의 스트림 (ID 290 및 295)이 있습니다 .
싱크대로 옮기자 0
:
$ pactl move-sink-input 290 0
$ pactl move-sink-input 295 0
그게 다야. 이제 우리를 위해 작동하는 스크립트를 만들어야합니다.
#!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 <sinkId/sinkName>" >&2
echo "Valid sinks:" >&2
pactl list short sinks >&2
exit 1
fi
newSink="$1"
pactl list short sink-inputs|while read stream; do
streamId=$(echo $stream|cut '-d ' -f1)
echo "moving stream $streamId"
pactl move-sink-input "$streamId" "$newSink"
done
당신은 싱크 ID 또는 (예 중 하나를 매개 변수로 싱크 이름 중 하나와 함께 호출 할 수 있습니다 0
또는 뭔가처럼 alsa_output.pci-0000_01_00.1.hdmi-surround
).
이제이 스크립트를 udev 이벤트 또는 키 바로 가기에 첨부 할 수 있습니다.
man pactl
PulseAudio 명령 행 옵션을 살펴볼 수 있습니다.