在 KDE 中快速更改音频设备

Rya*_*yan 16 audio kde opensuse kde-4 opensuse-13.2

我最近从 Windows 切换到 OpenSUSE(使用 KDE),我仍在经历学习曲线。

我经常在使用带内置麦克风的耳机和使用显示器的内置扬声器和网络摄像头的麦克风之间切换。通过 KMix 使用 Phonon 菜单(下面的示例),我可以重新排列设备以将我想要使用的设备放在最上面,但我更愿意使用热键来完成,类似于在音频切换器应用程序确实在Windows上。当我这样做时,我还想将主通道也设置为新通道,以便我可以轻松调整音频。

在此处输入图片说明

有没有办法通过一些脚本让我(a)即时选择一个新的默认音频播放和录音设备,(b)同时还使用热键将主通道设置为相同的播放设备(c)或桌面上的其他快速方法?

use*_*.dz 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).
Run Code Online (Sandbox Code Playgroud)

来源: 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
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  4. 设置默认值

    pactl set-default-source id-or-name
    pactl set-default-sink id-or-name
    
    Run Code Online (Sandbox Code Playgroud)

    例子:

    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
    
    Run Code Online (Sandbox Code Playgroud)

    或者:

    pactl set-default-source 2
    pactl set-default-sink 1
    
    Run Code Online (Sandbox Code Playgroud)

笔记:

更改主频道

按照本教程,您可以使用qdbus以下方法设置主通道:

  1. 使用以下命令为您的每个设备查找主混音器。首先手动设置主通道为你要查看的通道,然后运行命令:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用该命令的结果和您希望控制的音频接收器,使用以下语法来更改您的主通道:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "[insert Mixer]" "[insert sink]" 2>&1 > /dev/null
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后,将当前所有音频切换到一个新通道,将其设置为默认,并将其设置为主通道的脚本如下所示:

    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).
    
    Run Code Online (Sandbox Code Playgroud)