KDE'de ses cihazını hızla değiştirin


16

Son zamanlarda Windows'tan OpenSUSE'a (KDE ile) geçtim ve hala öğrenme eğrisinden geçiyorum.

Kulaklıklarımı yerleşik mikrofonla kullanma ile monitörünüzün yerleşik hoparlörlerini ve web kameramın mikrofonunu kullanma arasında oldukça sık geçiş yapıyorum. KMix üzerinden Phonon menüsünü kullanarak (aşağıdaki örnek), kullanmak istediğim öğeyi en üste koymak için cihazları yeniden düzenleyebiliyorum, ancak buna benzer bir kısayol tuşu ile yapmayı tercih ederim Ses Switcher uygulaması Windows üzerinde yapar. Bunu yaptığımda, ses kanalını kolayca ayarlayabilmem için Ana kanalı da yeni kanal olarak ayarlamak istiyorum.

resim açıklamasını buraya girin

Bazı komut dosyalarında (a) yeni bir varsayılan ses çalma ve ses kayıt cihazı seçmeme izin verecek bir yol var mı, (b) aynı zamanda ana kanalı bir kısayol tuşuyla aynı oynatma cihazına (c) ayarlarken veya masaüstündeki diğer hızlı yöntem?

Yanıtlar:


10

Çoğu GUI kiti aynı arka uç PulseAudio'yu kullanır. pactlKontrol komut dosyası yazmak için kullanın .

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).

Kaynak: man pactl

  1. Kullanılabilir çıkış lavabolarını kontrol etmek için

    $ 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. Kullanılabilir giriş kaynaklarını kontrol etmek için

    $ 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. Varsayılanı kontrol etmek için

    $ 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. Varsayılanı ayarlamak için

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

    Misal:

    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
    

    veya:

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

Notlar:

  • Bu sadece yeni akışları etkiler, mevcut çalışan akışları taşımanız gerekir, bu nedenle şunu kullanın:

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

    Kopyalamak için güzel bir örnek: HDMI bir dizüstü bilgisayara takıldığında HDMI Sese geçme (14.04)

  • Bazı kartlar birden fazla değiştirilebilir bağlantı noktasına sahiptir, İstediğiniz varsayılan olabilir.

    Kullanılabilir bağlantı noktalarını kontrol edin:

    $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
    ...
    

    Ayarlamak için:

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

    Misal:

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

Ana Kanalı değiştirmek için

Aşağıdaki Bu eğitimde , kullanmakta usta kanal ayarlayabilirsiniz qdbusşöyle:

  1. Aşağıdaki komutla cihazlarınızın her biri için Ana Mikser'i bulun. İlk önce Ana Kanalı manuel olarak kontrol etmek istediğiniz kanal olarak ayarlayın, ardından komutu çalıştırın:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl
    
  2. Bu komutun sonucunu ve kontrol etmek istediğiniz ses alıcısını kullanarak ana kanalınızı değiştirmek için aşağıdaki sözdizimini kullanın:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "[insert Mixer]" "[insert sink]" 2>&1 > /dev/null
    
  3. Sonunda, mevcut tüm sesi yeni bir kanala geçirmek, varsayılan olarak ayarlamak ve ana kanal olarak aşağıdaki gibi görünen komut dosyası:

    #!/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

Bu harika bir yanıt gibi görünüyor, ancak kurulumumun PulseAudio kullandığını sanmıyorum. Komutları kullanabilirim, ancak geçerli varsayılan kaynak ve lavabo, Fonon menüsünde gösterilenle aynı değil. Ve onları değiştirmenin bir etkisi yok gibi görünüyor.
Ryan

@Ryan, sadece openSUSE 13.1 KDE'de test ettim, iyi çalışıyor gibi görünüyor. Fark ettiğim tek şey: Phonon paneli, ayarlar PulseAudio'dan değiştirildiyse arayüzünü yenilemez. pavucontrolEkranda 3'ü birlikte kurabilir misiniz (terminal w / pactl + pavucontrol panel + phonon panel). Her birinden ayarı değiştirmeye çalışın ve izleyin. Bazen, gerçek ayar durumunu görmek için tekrar açıp kapatmanız gerekir.
user.dz

Her ikisini de birbirine bağlayan yeni bir profil oluşturabileceğinizi öğrendim ve böylece her zaman görünürler pactl list short sinks, aşağıda cevabımı görün
Francesco

3

Bu cevap sayesinde sonunda bir çözüm buldum, aşağıdaki talimatlara bakın

Karışık olarak her zaman HDMI çıkışını göster Her iki profili "Analog ses" ve "HDMI ses" bağlayan yeni bir profil oluşturacağız.

Anladığım kadarıyla bu dosya /usr/share/pulseaudio/alsa-mixer/profile-sets/default.confAlsa ve Pulseaudio arasındaki tüm haritalama profillerini listeliyor.

1.
Sizin Analog profileve HDMI profiletanımınızla ilişkili eşlemeyi bulun . ( açıklama: Ses Düzeyi Kde ayar modülünde gösterilen Aygıt Profilleriyle eşleşmelidir )

Benim için şunlar:

[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.
Yukarıdaki Eşleme tanımının temelinde, her ikisini de gruplandıran aşağıdaki yeni profili oluşturdum:

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

3.
Darbe sesini şu komutla yeniden başlatın:

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

4.
KDE fonon ayarları> Ses Donanımı kurulumu'na gidin ve yeni profili seçin. Karıştırıcıda 2 profil

Şimdi her iki profili de karma olarak görmelisiniz ve böylece kolayca geçiş yapabilirsiniz:

HDMI şimdi mikserde her zaman gösteriliyor
Bu plazmoid mikseri kullanmanızı öneririm: https://store.kde.org/p/1100894/

(ekstra adım) Her iki çıkışı da etkinleştir

Hem bilgisayar hoparlörünün hem de TV çıkış sesinin aynı anda olmasını umursamıyorsanız (temel olarak ses çıkışını değiştirmenize gerek yoktur).

Aşağıdaki ayarı seçebilir ve ardından mikserde yeni bir girişiniz olur.

resim açıklamasını buraya girin


Bu harika, bir cazibe gibi çalışıyor, teşekkür ederim!
stsloth

0

Önceki yorumlara dayanarak, aşağıdaki komut dosyasını yazdım ve iki ses cihazım arasında geçiş yapmak için KDE Plazma'da kullanmak için bir kısayol tuşuna bağladım. Bu işlemi tamamen otomatik hale getirmenin aksine, ses kaynağımın kontrolünü ele almaktan hoşlanıyorum.

Ses aygıtlarınızı uygun şekilde değiştirin. pactl list short sinksCihazlarınızı belirlemek için kullanın .

#!/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

Durumum basit. İki çıktı bazı hdmi ve bazı analog var, bu yüzden user.dz cevap dayalı (teşekkürler) Ben bu küçük komut dosyası yazdı ve klavye kısayolları ile çağırır.

#!/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

Başka arabirimleriniz varsa "pactl list short sink" çıktısında benzersiz bir desen arayabilir ve betiği istediğiniz parametre ile çağırabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.