Быстро сменить аудиоустройство в KDE

11851
Ryan

Я недавно переключился на OpenSUSE (с KDE) из Windows, и я все еще прохожу через кривую обучения.

Я довольно часто переключаюсь между использованием наушников со встроенным микрофоном и использованием встроенных динамиков моего монитора и микрофона моей веб-камеры. Используя меню Phonon через KMix (пример ниже), я могу переставить устройства так, чтобы они помещались поверх того, который я хочу использовать, но я бы предпочел сделать это с помощью горячей клавиши, аналогично Audio Switcher делает приложение на Windows. Когда я делаю это, я также хотел бы установить мастер-канал на новый, чтобы я мог легко настроить звук.

Быстро сменить аудиоустройство в KDE

Есть ли способ через какой-нибудь сценарий, который позволил бы мне (а) выбрать новое устройство воспроизведения звука по умолчанию и записывающее аудио устройство на лету, (б), а также настроить мастер-канал для того же устройства воспроизведения (в) с помощью горячей клавиши или другой быстрый метод на рабочем столе?

15

2 ответа на вопрос

10
user.dz

Most GUI kits use same backend PulseAudio. Use pactl to write control script.

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

Source: man pactl

  1. To check available output sinks

    $ 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. To check available input sources

    $ 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. To check default

    $ 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. To set default

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

    Example:

    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 

    or:

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

Notes:

  • This will affect only new streams, you have to move the current running streams, so use:

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

    Nice example to copy from: Switching to HDMI Audio when HDMI is plugged into a laptop (14.04)

  • Some cards has multiple switchable ports, May be the one you want is not the default.

    Check for available ports:

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

    To set it:

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

    Example:

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

To change the Master Channel

Following this tutorial, you can set the master channel using qdbus as follows:

  1. Find the Master Mixer for each of your devices with the following command. First manually set the Master Channel to the one you want to check, then run the command:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl 
  2. Using the result of that command and the audio sink you wish you control, use the following syntax to change your master channel:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "[insert Mixer]" "[insert sink]" 2>&1 > /dev/null 
  3. In the end, the script to switch all current audio to a new channel, set it as the default, and set it as the master channel looks like the following:

    #!/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 '')) for i in $; 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 
Это выглядит как отличный ответ, но я не думаю, что моя установка использует PulseAudio. Я могу использовать команды, но текущий источник и приемник по умолчанию не совпадают с показанными в меню Phonon. И изменение их, кажется, не имеет никакого эффекта. Ryan 9 лет назад 0
@ Райан, я только что протестировал его в openSUSE 13.1 KDE, похоже, работает хорошо. Единственное, что я заметил: панель Phonon не обновляет свой интерфейс, если настройки изменились с PulseAudio. Не могли бы вы установить `pavucontrol`, а затем открыть 3 вместе на экране (терминал с pactl + pavucontrol панель + фононная панель). Попробуйте изменить настройки каждого и смотреть. Иногда вам нужно закрыть фонон и открыть его снова, чтобы увидеть реальное состояние установки. user.dz 9 лет назад 0
Я обнаружил, что вы можете создать новый профиль, который связывает оба приемника вместе, и поэтому они всегда видны `коротким приемникам списка pactl ', см. Мой ответ ниже Francesco 6 лет назад 0
1
Francesco

Благодаря этому ответу я наконец нашел решение, см. Ниже инструкцию

Всегда показывать выход HDMI в смешанном виде. Мы создадим новый профиль, который свяжет оба профиля: «Аналоговый звук» и «Аудио HDMI».

Из моего понимания этот /usr/share/pulseaudio/alsa-mixer/profile-sets/default.confсписок файлов всех профилей сопоставления между Alsa и Pulseaudio.

1.
Найдите сопоставление, которое относится к вашему Analog profileи HDMI profileопределению. ( описание: должно соответствовать профилям устройств, показанным в модуле настройки громкости звука Kde)

Для меня это следующие:

[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.
Перейдите в настройки фонона KDE> Настройка аудиооборудования и выберите новый профиль. 2 profiles in the mixer

Теперь вы должны увидеть оба профиля в смешанном, и вы сможете легко переключаться:

HDMI is always shown in the mixer now
Я бы предложил использовать этот плазмоидный миксер: https://store.kde.org/p/1100894/

(дополнительный шаг) Принудительное включение обоих выходов

Если вы не возражаете против одновременного вывода звука с компьютера и с телевизора (то есть, по сути, вам не нужно переключать звук).

Вы можете выбрать настройки ниже, и тогда у вас будет новая запись в микшере

enter image description here