ऑडियो आउटपुट डिवाइस, फास्ट स्विच?


19

स्थिति के आधार पर, मैं ऑडियो आउटपुट के लिए अपने स्पीकर या मेरे हेडसेट का उपयोग करता हूं। यह देखते हुए कि मेरा हेडसेट एक USB हेडसेट है जो अपने स्वयं के ऑडियो डिवाइस के रूप में व्यवहार करता है।

वर्तमान में मैं ऊपरी दाएं ट्रे में स्पीकर आइकन पर क्लिक करके ऑडियो आउटपुट डिवाइस के बीच स्विच करता हूं, जहां मैं साउंड सेटिंग्स का चयन करता हूं, आउटपुट टैब पर जाता हूं और वहां डिवाइस को चुनता हूं जो मुझे चाहिए।

मुझे आश्चर्य है कि क्या मेरे यूएसबी हेडसेट को आगे और पीछे स्विच करने के लिए कुछ आसान / तेज तरीका हो सकता है? शायद एक समर्पित ट्रे आइकन, एक कुंजी मानचित्रण, या तो?

मैं डिफ़ॉल्ट Gnome डेस्कटॉप के साथ Ubuntu 10.04 चला रहा हूं।

जवाबों:


11

आदेश पंक्ति से डिफ़ॉल्ट ऑडियो आउटपुट डिवाइस को बदलने के लिए, आप उपयोग कर सकते हैं pacmd पल्स ऑडियो कमांड-लाइन उपयोगिता का ।

मुझे आज भी ऐसा ही करने की आवश्यकता है, हेडफ़ोन और स्पीकर के बीच स्विच करना चाहते हैं, दोनों ने अलग-अलग ऑडियो कार्ड में प्लग इन किया है। यहाँ शेल स्क्रिप्ट मैंने ऐसा करने के लिए लिखा है:

#!/usr/bin/env bash

sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))

[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}

pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

टिप्पणियाँ:

  • यह पहले दो ऑडियो आउटपुट डिवाइस के बीच स्वैप करता है pacmd यूटिलिटी को सूचीबद्ध करता है। यदि आपके पास दो से अधिक ऑडियो डिवाइस हैं और एक अलग से स्वैप करना चाहते हैं, तो आपको लाइन 7 पर तर्क को कुछ शर्तों के साथ बदलना होगा।
  • बस डिफ़ॉल्ट सिंक डिवाइस को स्वैप करने से वर्तमान में चल रहे अनुप्रयोगों के लिए कुछ भी नहीं होता है - वे पिछले डिवाइस पर आउटपुट करना जारी रखेंगे। यह स्क्रिप्ट सभी मौजूदा इनपुट के लिए सिंक गंतव्य को भी स्थानांतरित करती है। यानी, यदि आप इस स्क्रिप्ट को संगीत के साथ एक डिवाइस पर चलाते हैं, तो यह तुरंत दूसरे को स्वैप कर देगा। यदि आप मौजूदा एप्लिकेशन को पिछले डिवाइस पर जारी रखना चाहते हैं, तो अंतिम पंक्ति (और पंक्ति 5, यदि आप चाहें) पर टिप्पणी करें।

7

ठीक है, आप स्थापित कर सकते हैं pavucontrol, यह पहले टैब पर ध्वनि उपकरण चयन के साथ ऐप दिखाता है, यह आपको कुछ प्रयास बचाएगा। लेकिन जो आप वास्तव में चाहते हैं, मुझे लगता है कि आपको USB हेडसेट को डिफ़ॉल्ट डिवाइस के रूप में चिह्नित करना है, तो हर बार जब आप इसे सभी ध्वनि में प्लग करते हैं, तो इसे रीडायरेक्ट किया जाएगा, और जब आप इसे प्लग-आउट करते हैं - तो यह वक्ताओं पर वापस आ जाएगा। अनायास, वास्तव में।


2
आप Ubuntu Precise में डिफ़ॉल्ट डिवाइस कैसे सेट करते हैं?
ब्लू

3

सवाल काफी पुराना है लेकिन मेरा जवाब अभी भी गनोम 2 उपयोगकर्ताओं के लिए उपयोगी हो सकता है। मैंने यहाँ वर्णित सटीक समस्या के लिए PulseAudio मिक्सर एप्लेट का उपयोग किया । आप पैनल मेनू में इनपुट और आउटपुट डिवाइस को बदल सकते हैं। यह मेरे लिए सबसे सुविधाजनक तरीका है।


3

बेशक एप्लेट का उपयोग करके उपकरणों को बदलना भी ठीक काम कर रहा है। लेकिन स्क्रिप्ट लिखने के बारे में अच्छी बात यह है कि यह सुपर फास्ट है। मैंने कुंजीपटल शॉर्टकट alt + s पर उदाहरण के लिए मेरा डाला। इस प्रकार जब मैं हेडफ़ोन से स्पीकरों पर स्विच करना चाहता हूं, तो मुझे केवल alt + s दबाना होगा।

वैसे भी। एंड्रयू ने कहा:

यदि आपके पास दो से अधिक ऑडियो डिवाइस हैं और एक अलग से स्वैप करना चाहते हैं, तो आपको लाइन 7 पर तर्क को कुछ शर्तों के साथ बदलना होगा।

वही मैंने किया। अगर किसी को इससे परेशानी होती है तो मैं इसे साझा करता हूं:

#!/usr/bin/env bash

#sinks=($(pacmd list-sinks | grep index | \
#    awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ($1 == "*") print "1"; else print "0" }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))

#find active sink
active=0
for i in ${sinks[*]}
do
    if [ $i -eq 0 ]
        then active=$((active+1))
        else break
    fi
done

#switch to next sink
swap=$(((active+1)%${#sinks[@]}))

pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

मैंने जो कुछ अलग किया है वह क) लूप के लिए सक्रिय सिंक है। और बी) 1. द्वारा सूचकांक में वृद्धि करके अगले सिंक पर स्विच करें। फिर मैं सिंक की संख्या से परिणाम को मापता हूं। यह विश्वास दिलाता है कि जब 3 डूब रहा है, (2 + 1)% 3 = 0। इस प्रकार सिंक इंडेक्स 2 से हम इंडेक्स 0 पर स्विच करेंगे।

इस तरह स्विच उपलब्ध सिंक के माध्यम से ऊपर की ओर बढ़ने की अनुमति देता है।


2

स्क्रिप्ट के लिए धन्यवाद! मैंने इनपुट (माइक्रोफ़ोन) के लिए एक भाग जोड़ा है, यदि कोई इसका उपयोग करना चाहता है:

while read line ; do
  case $line in 
    *\*\ index*) x=1 ;;
    index*) x=0 ;;
    name*) 
      source=$(echo $line | sed -e "s/.*<//;s/>.*//")
      if [[ $x = "0" ]] ; then
        pacmd set-default-source $source &> /dev/null
      fi ;;
  esac
done < <(pacmd list-sources | grep -e alsa_input -e index)

2

ध्वनि उपकरणों की अपनी सूची के माध्यम से चक्र करने के लिए, निम्नलिखित स्क्रिप्ट का उपयोग करें:

#!/bin/bash

declare -i sinks=(`pacmd list-sinks | sed -n -e 's/\**[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`)
declare -i sinks_count=${#sinks[*]}
declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/\*[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`
declare -i next_sink_index=${sinks[0]}

#find the next sink (not always the next index number)
declare -i ord=0
while [ $ord -lt $sinks_count ];
do
echo ${sinks[$ord]}
if [ ${sinks[$ord]} -gt $active_sink_index ] ; then
    next_sink_index=${sinks[$ord]}
    break
fi
let ord++
done

#change the default sink
pacmd "set-default-sink ${next_sink_index}"

#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]\)/\1/p');
do
pacmd "move-sink-input $app $next_sink_index"
done

#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)"/\1/p' | while read line;
do
if [ $(( $ord % $sinks_count )) -eq $ndx ] ; then
    notify-send -i notification-audio-volume-high --hint=string:x-canonical-private-    synchronous: "Sound output switched to" "$line"
    exit
fi
let ndx++
done;

सारा श्रेय उबंटू फोरम से tsvetan को जाता है ।


1

मैं अपने लैपटॉप पर आंतरिक वक्ताओं और एक सेब हवाई अड्डे के बेस स्टेशन के बीच स्विच करने के लिए ऐसा करने के लिए एक रास्ता तलाश रहा था जो मेरे स्टीरियो में प्लग किया गया है। मैंने स्विच करने के लिए हॉटकीज़ असाइन करने का निर्णय लिया। मैं चाहता था कि ऑडियो वरीयताओं वाली विंडो स्विच के दृश्य की पुष्टि करने के लिए एक सेकंड के लिए पॉप अप करें और बाद में विंडो को बंद करने के लिए wmctrl का उपयोग करें।

(मैंने ctrl + F8 और ctrl + F9 का उपयोग हॉटकी के रूप में किया है क्योंकि मेरे लैपटॉप पर इन कुंजियों का Fn फ़ंक्शन वॉल्यूम बढ़ाने और घटाने के लिए है, इसलिए यह स्पष्ट लग रहा था कि ctrl फ़ंक्शंस ऑडियो आउटपुट को बदल सकते हैं।)

मैंने निम्नलिखित 2 (लगभग समान) लिपियों का उपयोग किया:

#! /bin/bash
gnome-volume-control -p output &
sleep .7 
pacmd set-default-sink 1
sleep .8 
wmctrl -c "Sound Preferences"
exit

#! /bin/bash
gnome-volume-control -p output &
sleep .7 
pacmd set-default-sink 0
sleep .8 
wmctrl -c "Sound Preferences"
exit

ऐप्पल बेस स्टेशन में पहला परिवर्तन (जिसे मैंने ctrl + F9 को सौंपा है) और दूसरा आंतरिक स्पीकर (ctrl + F8) पर वापस आ जाता है। यह मानता है कि ये केवल 2 आउटपुट डिवाइस हैं।


1

मैंने एंड्रयूज स्क्रिप्ट पर यह सूचित करने के लिए सूचना-ओएसडी का उपयोग करने के लिए बनाया था कि उसने अभी क्या किया। अपनी आवश्यकताओं के बाद नामों के साथ लाइनों को संपादित करें।

#!/usr/bin/env bash

sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))

[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}

pacmd set-default-sink $swap 

for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

if [ "$swap" = "0" ]; then
notify-send -u normal -i audio-volume-medium-symbolic "Sound output changed. Now using: Corsair 2.1 Speakers!" 

else
notify-send -u normal -i audio-volume-medium-symbolic "Sound output changed. Now using: Logitech G930 Headset!" 

fi


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.