Seperti yang ditunjukkan oleh @ Teresa-e-Junior pactl
adalah alat untuk digunakan:
Pertama-tama kita mungkin ingin mendapatkan ID sink PA kita. Di sistem saya inilah yang saya dapatkan:
$ 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
Sink 1 saat ini adalah wastafel default saya.
Tapi sekarang saya ingin semua streaming saya saat ini dan masa depan diputar melalui HDMI (yaitu wastafel 0).
Ada perintah untuk mengatur bak cuci default untuk PulseAudio, tetapi sepertinya tidak berpengaruh pada PC saya:
$ pacmd set-default-sink 0 #doesn't work on my PC :(
Alih-alih, aliran baru tampaknya terhubung ke wastafel yang alirannya paling baru dipindahkan.
Jadi mari kita beri tahu pactl untuk memindahkan semua stream yang sedang diputar ke sink 0
. Pertama-tama kita harus mendaftar mereka:
$ pactl list short sink-inputs
290 1 176 protocol-native.c float32le 2ch 44100Hz
295 1 195 protocol-native.c float32le 2ch 44100Hz
Oke, kita punya dua aliran (ID 290 dan 295) yang keduanya terhubung ke wastafel 1
.
Mari kita gerakkan mereka untuk tenggelam 0
:
$ pactl move-sink-input 290 0
$ pactl move-sink-input 295 0
Jadi, seharusnya begitu. Sekarang kita hanya perlu membuat skrip yang berfungsi untuk kita:
#!/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
Anda bisa menyebutnya dengan ID wastafel atau nama wastafel sebagai parameter (mis. Salah satunya 0
atau sejenisnya alsa_output.pci-0000_01_00.1.hdmi-surround
).
Sekarang Anda dapat melampirkan skrip ini ke acara udev atau pintasan kunci.
man pactl
opsi-opsi baris perintah PulseAudio.