केडीई में ऑडियो डिवाइस को तुरंत बदलें


16

मैंने हाल ही में विंडोज से OpenSUSE (KDE के साथ) पर स्विच किया है, और मैं अभी भी सीखने की अवस्था से गुजर रहा हूं।

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

यहाँ छवि विवरण दर्ज करें

क्या कुछ स्क्रिप्ट के माध्यम से एक रास्ता है जो मुझे (a) मक्खी पर एक नए डिफ़ॉल्ट ऑडियो प्लेबैक और ऑडियो रिकॉर्डिंग डिवाइस का चयन करने की अनुमति देगा, (b) हॉटस्टक के साथ उसी प्लेबैक डिवाइस (c) को मास्टर चैनल सेट करते समय भी डेस्कटॉप पर अन्य त्वरित विधि?

जवाबों:


10

अधिकांश GUI किट उसी बैकएंड PulseAudio का उपयोग करते हैं। pactlकंट्रोल स्क्रिप्ट लिखने के लिए उपयोग करें ।

NAME
       pactl - Control a running PulseAudio sound server

DESCRIPTION
       pactl can be used to issue control commands to the PulseAudio sound server.

       pactl only exposes a subset of the available operations. For the full set use the pacmd(1).

स्रोत: man pactl

  1. उपलब्ध आउटपुट सिंक की जांच करने के लिए

    $ pactl list short sinks
    0   alsa_output.pci-0000_01_00.1.hdmi-stereo    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    1   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    
  2. उपलब्ध इनपुट स्रोतों की जांच करना

    $ pactl list short sources
    0   alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    1   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    2   alsa_input.pci-0000_00_1b.0.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    
  3. डिफ़ॉल्ट की जांच करने के लिए

    $ pactl info
    Server String: /run/user/1000/pulse/native
    Library Protocol Version: 30
    Server Protocol Version: 30
    Is Local: yes
    Client Index: 2
    Tile Size: 65472
    User Name: user
    Host Name: userpc
    Server Name: pulseaudio
    Server Version: 6.0
    Default Sample Specification: s16le 2ch 44100Hz
    Default Channel Map: front-left,front-right
    Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo
    Default Source: alsa_input.pci-0000_00_1b.0.analog-stereo
    
  4. डिफ़ॉल्ट सेट करने के लिए

    pactl set-default-source id-or-name
    pactl set-default-sink id-or-name
    

    उदाहरण:

    pactl set-default-source alsa_input.pci-0000_00_1b.0.analog-stereo
    pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
    

    या:

    pactl set-default-source 2
    pactl set-default-sink 1
    

टिप्पणियाँ:

  • यह केवल नई धाराओं को प्रभावित करेगा, आपको वर्तमान में चल रही धाराओं को स्थानांतरित करना होगा, इसलिए उपयोग करें:

    pacmd move-sink-input <stream-id> <sink-id/name>
    

    से कॉपी करने के लिए अच्छा उदाहरण: एचडीएमआई को लैपटॉप में प्लग करने पर एचडीएमआई ऑडियो पर स्विच करना (14.04)

  • कुछ कार्डों में कई स्विचेबल पोर्ट होते हैं, हो सकता है कि आप चाहते हैं कि डिफ़ॉल्ट न हो।

    उपलब्ध पोर्ट के लिए जाँच करें:

    $pactl list sinks
    Sink #1
        State: RUNNING
        Name: alsa_output.pci-0000_00_1b.0.analog-stereo
        Description: Built-in Audio Analog Stereo
        Driver: module-alsa-card.c
        ...
        Ports:
            analog-output-speaker: Speakers (priority: 10000, not available)
            analog-output-headphones: Headphones (priority: 9000, available)
        Active Port: analog-output-headphones
        Formats:
            pcm
    ...
    

    इसे सेट करने के लिए:

    pactl set-sink-port <sink-id/name> <port-name>
    

    उदाहरण:

    pactl set-sink-port 1 analog-output-headphones
    

मास्टर चैनल बदलने के लिए

इस ट्यूटोरियल के बाद , आप qdbusनिम्नानुसार मास्टर चैनल सेट कर सकते हैं:

  1. निम्नलिखित कमांड के साथ अपने प्रत्येक डिवाइस के लिए मास्टर मिक्सर खोजें। पहले आप जिस मास्टर चैनल को जांचना चाहते हैं, उसे मैन्युअल रूप से सेट करें, फिर कमांड चलाएँ:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl
    
  2. उस आदेश के परिणाम का उपयोग करके और ऑडियो सिंक जिसे आप नियंत्रित करना चाहते हैं, अपने मास्टर चैनल को बदलने के लिए निम्न सिंटैक्स का उपयोग करें:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "[insert Mixer]" "[insert sink]" 2>&1 > /dev/null
    
  3. अंत में, स्क्रिप्ट को सभी वर्तमान ऑडियो को एक नए चैनल पर स्विच करने के लिए, इसे डिफ़ॉल्ट के रूप में सेट करें, और इसे सेट करें क्योंकि मास्टर चैनल निम्नलिखित जैसा दिखता है:

    #!/bin/bash
    pactl set-default-sink alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo
    pactl set-default-source alsa_input.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-mono
    INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
    for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo &> /dev/null; done
    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "PulseAudio::Playback_Devices=:1" "alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo" 2>&1 > /dev/null

यह एक महान जवाब की तरह लग रहा है, लेकिन मुझे नहीं लगता कि मेरा इंस्टॉल पल्सअडियो का उपयोग कर रहा है। मैं कमांड का उपयोग कर सकता हूं, लेकिन वर्तमान डिफ़ॉल्ट स्रोत और सिंक वैसा नहीं है जैसा कि फोनन मेनू में दिखाया गया है। और उन्हें बदलने से कोई प्रभाव नहीं पड़ता है।
रयान

@ रेयान, मैंने अभी इसे ओपनएसयूएसई 13.1 केडीई में परीक्षण किया, अच्छी तरह से काम करने लगता है। केवल एक चीज जिस पर मैंने गौर किया: फोनन पैनल अपने इंटरफ़ेस को रिफ्रेश नहीं करता है यदि पल्सएडियो से सेटिंग्स बदल जाती हैं। क्या आप pavucontrolस्क्रीन पर 3 को एक साथ स्थापित कर सकते हैं (टर्मिनल w / pactl + pavucontrol पैनल + फोनॉन पैनल)। हर एक से सेटिंग बदलने की कोशिश करें और देखें। कुछ समय के लिए, आपको वास्तविक सेटिंग स्थिति को देखने के लिए इसे फिर से खुले फ़ोनोन को बंद करने की आवश्यकता है।
user.dz

मुझे पता चला कि आप एक नया प्रोफ़ाइल बना सकते हैं जो दोनों सिंक को एक साथ जोड़ता है और इसलिए वे हमेशा दिखाई देते हैं pactl list short sinks, नीचे मेरा जवाब देखें
फ्रांसेस्को

3

इस जवाब के लिए धन्यवाद मैंने आखिरकार एक समाधान पाया, नीचे दिए गए निर्देश देखें

मिश्रित में हमेशा एचडीएमआई आउटपुट दिखाएं हम एक नया प्रोफ़ाइल बनाएंगे जो दोनों प्रोफाइल "एनालॉग ऑडियो" और "एचडीएमआई ऑडियो" को लिंक करेगा।

मेरी समझ से इस फ़ाइल की /usr/share/pulseaudio/alsa-mixer/profile-sets/default.confसूची में अलसा और पल्सीडियो के बीच के सभी मैपिंग प्रोफाइल हैं।

1.
मानचित्रण खोजें जो आपके Analog profileऔर HDMI profileपरिभाषा से संबंधित हैं । ( विवरण: ऑडियो वॉल्यूम केडी सेटिंग मॉड्यूल में दिखाए गए डिवाइस प्रोफाइल से मेल खाना चाहिए )

मेरे लिए निम्नलिखित हैं:

[Mapping analog-stereo]
device-strings = front:%f
channel-map = left,right
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
priority = 10

[Mapping hdmi-stereo-extra1]
description = Digital Stereo (HDMI 2)
device-strings = hdmi:%f,1
paths-output = hdmi-output-1
channel-map = left,right
priority = 2
direction = output

2.
उपरोक्त मैपिंग परिभाषा के आधार पर मैंने निम्नलिखित नई प्रोफ़ाइल बनाई है जो उपरोक्त दोनों को समूह बनाती है:

[Profile output:analog-stereo+output:hdmi-stereo-extra1]
description = All
output-mappings = analog-stereo hdmi-stereo-extra1
input-mappings = analog-stereo

3.
इस आदेश के साथ पल्स ऑडियो को पुनरारंभ करें:

pulseaudio --kill; sleep 1; pulseaudio --start

4.
केडीई फोनन सेटिंग्स> ऑडियो हार्डवेयर सेटअप पर जाएं और नई प्रोफाइल का चयन करें। मिक्सर में 2 प्रोफाइल

अब आपको मिश्रित में दोनों प्रोफ़ाइल देखना चाहिए और इसलिए आप आसानी से स्विच कर पाएंगे:

एचडीएमआई को हमेशा मिक्सर में दिखाया जाता है
मैं इस प्लास्मोइड मिक्सर का उपयोग करने का सुझाव दूंगा: https://store.kde.org/p/1100894/

(अतिरिक्त चरण) दोनों आउटपुट सक्षम

अगर आपको एक ही समय में कंप्यूटर स्पीकर और टीवी आउटपुट ऑडियो दोनों से कोई आपत्ति नहीं है (तो मूल रूप से आपको ऑडियो आउटपुट को कभी स्विच नहीं करना है)।

आप नीचे दिए गए सेटिंग का चयन कर सकते हैं और फिर आपको मिक्सर में एक नई प्रविष्टि मिलेगी

यहाँ छवि विवरण दर्ज करें


यह सिर्फ महान है, एक आकर्षण की तरह काम करता है, धन्यवाद!
stsloth

0

पिछली टिप्पणियों के आधार पर, मैंने निम्नलिखित स्क्रिप्ट लिखी और अपने दो ऑडियो उपकरणों के बीच टॉगल करने के लिए केडीई प्लाज़्मा में उपयोग के लिए हॉटकी से बाँध दिया। मुझे इस प्रक्रिया को पूरी तरह से स्वचालित करने के विपरीत अपने ऑडियो स्रोत का नियंत्रण पसंद है।

उपयुक्त के रूप में अपने ऑडियो डिवाइस बदलें। pactl list short sinksअपने उपकरणों को निर्धारित करने के लिए उपयोग करें ।

#!/bin/bash

# Audio sinks
HEADSET='alsa_output.usb-Corsair_Corsair_VOID_PRO_Wireless_Gaming_Headset-00.analog-stereo'
SPEAKERS='alsa_output.pci-0000_1f_00.3.analog-stereo'

# Get current audio sink
CURRENTDEV=$(pactl list short sinks | grep RUNNING | awk {'print $2'})

# Determine our next audio sink
if [[ "$CURRENTDEV" == "$HEADSET" ]]; then
    NEXTDEV=$SPEAKERS
else
    NEXTDEV=$HEADSET
fi

# Set our default device
pactl set-default-sink $NEXTDEV

# Move current streams (dont check for null, if null you wont see heads up display of audio change)
INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
for i in ${INPUTS[*]}; do pacmd move-sink-input $i $NEXTDEV &> /dev/null; done


0

मेरी स्थिति सरल है। मेरे पास दो आउटपुट हैं कुछ hdmi और कुछ एनालॉग, इसलिए user.dz उत्तर (धन्यवाद) के आधार पर मैंने यह छोटी स्क्रिप्ट लिखी और इसे कीबोर्ड शॉर्टकट के साथ कॉल किया।

#!/bin/bash
# parameter: "hdmi" or "analog"

output=`pactl list short sinks |grep $1 | cut -f1`

pactl set-default-sink $output

for i in `pacmd list-sink-inputs |grep index: | awk '{print $2}'`; do
  pacmd move-sink-input $i $output
done

यदि आपके पास अन्य इंटरफेस हैं, तो आप "पैक्टल लिस्ट शॉर्ट सिंक" आउटपुट में अनूठे पैटर्न की तलाश कर सकते हैं और स्क्रिप्ट को उस पैरामीटर के साथ कॉल कर सकते हैं जो आप चाहते हैं।

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