@ टेरेसा-ए-जूनियर ने बताया कि pactl
उपयोग करने के लिए उपकरण है:
सबसे पहले हम अपने पीए सिंक की आईडी प्राप्त करना चाहते हैं। मेरे सिस्टम पर मुझे यही मिलता है:
$ 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 वर्तमान में मेरा डिफ़ॉल्ट सिंक है।
लेकिन अब मैं चाहता हूं कि मेरे सभी वर्तमान और भविष्य की धाराएं एचडीएमआई (सिंक 0) के माध्यम से खेली जाएं।
PulseAudio के लिए डिफ़ॉल्ट सिंक सेट करने के लिए एक कमांड है, लेकिन यह मेरे पीसी पर कोई प्रभाव नहीं डालता है:
$ pacmd set-default-sink 0 #doesn't work on my PC :(
इसके बजाय, नई धाराएँ उस सिंक से जुड़ी हुई प्रतीत होती हैं, जिसकी एक धारा सबसे हाल ही में उसके पास गई थी।
तो चलिए बताते हैं कि संकलित करने के लिए सभी वर्तमान में चल रही धाराएं चलती हैं 0
। हमें पहले उन्हें सूचीबद्ध करना होगा:
$ pactl list short sink-inputs
290 1 176 protocol-native.c float32le 2ch 44100Hz
295 1 195 protocol-native.c float32le 2ch 44100Hz
ठीक है, हमें दो धाराएँ (आईडी 290 और 295) मिली हैं जो दोनों सिंक से जुड़ी हैं 1
।
चलो उन्हें डूबने के लिए ले जाएँ 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
आप इसे या तो सिंक आईडी या सिंक नाम के साथ पैरामीटर (जैसे या तो 0
कुछ या कुछ alsa_output.pci-0000_01_00.1.hdmi-surround
) कह सकते हैं ।
अब आप इस स्क्रिप्ट को udev घटना या मुख्य शॉर्टकट से जोड़ सकते हैं।
man pactl
PulseAudio कमांड लाइन विकल्पों के लिए एक नज़र हो सकती है ।