KDE에서 오디오 장치를 빠르게 변경


16

최근에 Windows에서 OpenSUSE (KDE 사용)로 전환했는데 여전히 학습 과정을 거치고 있습니다.

마이크가 내장 된 헤드폰과 모니터의 내장 스피커 및 웹캠의 마이크를 사용하는 경우가 자주 있습니다. KMix를 통한 Phonon 메뉴 (아래 예)를 사용하여 사용하려는 장치를 맨 위에 놓도록 장치를 다시 정렬 할 수 있지만 다음과 유사한 핫키로 장치를 수행 할 수 있습니다. 오디오 스위처의 응용 프로그램은 Windows에서 않습니다. 내가 할 때 마스터 채널을 새로운 채널로 설정하여 오디오를 쉽게 조정할 수 있습니다.

여기에 이미지 설명을 입력하십시오

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

    좋은 예 : HDMI가 랩톱에 연결되어있을 때 HDMI 오디오로 전환 (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

이것은 훌륭한 답변처럼 보이지만 설치가 PulseAudio를 사용하고 있다고 생각하지 않습니다. 명령을 사용할 수 있지만 현재 기본 소스 및 싱크는 Phonon 메뉴에 표시된 것과 동일하지 않습니다. 그리고 그것들을 바꾸는 것은 효과가없는 것 같습니다.
Ryan

@Ryan, 방금 openSUSE 13.1 KDE에서 테스트했으며 잘 작동하는 것 같습니다. 내가 주목 한 것은 Phonon 패널이 설정이 PulseAudio에서 변경된 경우 인터페이스를 새로 고치지 않습니다. pavucontrol화면에서 3을 함께 설치 하고 열 수 있습니까 (터미널 w ​​/ pactl + pavucontrol 패널 + phonon 패널). 각각의 설정을 변경하고 시청하십시오. 때때로, 당신은 실제 설정 상태를 보려면 다시 열기를 닫으십시오.
user.dz 2016 년

나는 당신이 싱크대를 서로 연결하는 새로운 프로파일을 만들 수 있다는 것을 알았습니다. 그래서 그들은 항상 볼 수 있습니다. pactl list short sinks아래 내 대답을보십시오
Francesco

3

이 답변 덕분에 마침내 해결책을 찾았습니다. 아래 지침을 참조하십시오.

항상 HDMI 출력을 혼합하여 표시 "아날로그 오디오"및 "HDMI 오디오"프로파일을 모두 연결하는 새 프로파일을 만듭니다.

내 이해 에서이 파일 /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf 바에 은 Alsa와 Pulseaudio 사이의 모든 매핑 프로파일을 나열합니다.

1.
귀하 Analog profileHDMI profile정의 와 관련된 매핑을 찾으십시오 . ( 설명 :에 표시된 장치 프로필 과 일치해야합니다 . Audio Volume 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 개의 프로파일

이제 두 프로필이 혼합되어 표시되므로 쉽게 전환 할 수 있습니다.

HDMI는 항상 믹서에 표시됩니다
이 플라스미드 믹서를 사용하는 것이 좋습니다 : https://store.kde.org/p/1100894/

(추가 단계) 두 출력 모두 활성화

컴퓨터 스피커와 TV 출력 오디오를 동시에 사용하는 것이 마음에 들지 않으면 기본적으로 오디오 출력을 전환 할 필요가 없습니다.

아래 설정을 선택하면 믹서에 새로운 항목이 생깁니다.

여기에 이미지 설명을 입력하십시오


이것은 대단하고 매력처럼 작동합니다. 감사합니다!
stsloth

0

이전 의견을 바탕으로 다음 스크립트를 작성하고 KDE 플라즈마에서 사용하기 위해 핫키에 바인딩하여 두 오디오 장치 간을 전환합니다. 이 프로세스를 완전히 자동화하는 대신 오디오 소스를 제어하는 ​​것을 좋아합니다.

오디오 장치를 적절하게 변경하십시오. 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

다른 인터페이스가있는 경우 "pactl list short sinks"출력에서 고유 한 패턴을 찾고 원하는 매개 변수를 사용하여 스크립트를 호출 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.