快速更改KDE中的音频设备

Modified on: Wed, 23 Jan 2019 11:00:03 +0800

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

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

是否有办法通过某些脚本允许我(a)动态选择新的默认音频播放和录音设备,(b)同时还将主通道设置为同一播放设备(c)桌面上的热键或其他快速方法?

作者:,Ryan

最佳答案

大多数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. 检查可用的输出接收器

    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).
    
  2. 检查可用的输入源

    $ 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
    
  3. 检查默认

    $ 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
    
  4. 设置默认值

    $ 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
    

    示例:

    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
    
  5. 醇>

    备注:强>

  • 这只会影响新流,您必须移动当前正在运行的流,因此请使用:

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

    复制的好例子:当HDMI插入笔记本电脑(14.04)时切换到HDMI音频

  • 有些卡有多个可切换端口,可能是你想要的不是默认端口。

    检查可用端口:

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

    设置它:

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

更改主频道

本教程之后,您可以使用qdbus设置主通道,如下所示:

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

    pactl set-sink-port 1 analog-output-headphones
    
  2. 使用您希望控制的该命令和音频接收器的结果,使用以下语法更改主通道:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl
    
  3. 最后,将所有当前音频切换为新频道,将其设置为默认频道并将其设置为主频道的脚本如下所示:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "[insert Mixer]" "[insert sink]" 2>&1 > /dev/null
    
  4. 醇>
作者:,user.dz

相关问答

添加新评论