연결을 끊지 않고 헤드폰과 스피커 간을 전환하는 방법

연결을 끊지 않고 헤드폰과 스피커 간을 전환하는 방법

헤드폰을 전면 잭에 연결하면 스피커(라인 출력)가 음소거됩니다. 헤드폰을 분리하지 않고 스피커로 전환하고 싶습니다. gnome-control-center두 가지 가능한 옵션이 있습니다 .pavucontrol:이어폰그리고라인 아웃. 하지만 라인아웃으로 전환하면 아무 소리도 들리지 않습니다. 올바른 동작을 어떻게 설정합니까?

Realtek ALC1150을 설치하고 Alsa 및 PulseAudio를 설치했습니다.

답변1

1. 소프트웨어 전환 지원

사운드 카드가 전면 오디오 패널에 대한 소프트웨어 전환을 지원하는지 확인하십시오. 일부 구형 마더보드는 소프트웨어 전환을 전혀 지원하지 않습니다. 일부 사운드 카드에는 두 가지 변형 모두에 대한 커넥터가 마더보드에 있습니다.소프트웨어그리고하드웨어교환. 이 경우 마더보드 설명서에 따라 소프트웨어 전환 기능이 있는 커넥터를 사용해야 합니다.

2.Alsamixer가 자동으로 소리를 음소거합니다.

자동 음소거는 Alsa의 기능입니다. 헤드폰을 연결하면 다른 오디오 출력이 자동으로 음소거됩니다. 다음에서 찾아서 비활성화할 수 있습니다.alsamixer. AlsaMixer를 열고 사운드 카드를 선택한 다음 F6AutoMute를 사용하고 이동하여 찾으십시오. 활성화된 경우 아래쪽 화살표 키를 사용하여 비활성화합니다.<>

3.PulseAudio 구성

PulseAudio에는 문서가 거의 없기 때문에 이것이 가장 문제가 되는 부분입니다. 이전 단계에서 자동 음소거를 비활성화하면 두 경우 모두 스피커가 재생되었습니다. 헤드폰으로 바꾸든 라인아웃으로 바꾸든 상관없습니다.

그래서 내가 해야 할 일은 AlsaMixer를 다시 살펴보고 설정이나 pavucontrol의 오디오 토글에 볼륨 막대가 어떻게 반응하는지 확인하는 것입니다.

라인 출력: AlsaMixer 라인 출력

이어폰: AlsaMixer 헤드폰

보시다시피 헤드폰으로 전환하면 거의 모든 볼륨 막대가 음소거됩니다. 그러나 얼마 지나지 않아 내 스피커의 볼륨이 어떤 이유에서인지 알게 되었습니다.앞쪽술집. 이제 마지막으로 하고 싶은 일은 PulseAudio를 음소거하도록 구성하는 것입니다.앞쪽헤드폰으로 전환한 후의 볼륨 표시줄입니다.

편집해야 할 PulseAudio 구성 파일은 에 저장되어 있습니다 /usr/share/pulseaudio/alsa-mixer/paths/. 제 경우에는 방금 파일을 편집했는데 analog-output-headphones.conf구성에 따라 다를 수 있습니다. 다음 줄을 포함하려면 루트로 파일을 편집해야 합니다.

[Element Front]
switch = off
volume = off

완료되면 파일을 저장하고 를 사용하여 PulseAudio를 다시 시작하십시오 pulseaudio -k.

이제 출력 전환이 예상대로 작동합니다.

답변2

다음 온라인 바로가기를 사용하여 전환할 수 있습니다.

[[ $(pacmd list-cards | grep "active profile" | cut -d " " -f 3-) = "<output:hdmi-stereo-extra1+input:analog-stereo>" ]] && pacmd set-card-profile 0 "output:analog-stereo+input:analog-stereo" || pacmd set-card-profile 0 "output:hdmi-stereo-extra1+input:analog-stereo"

이 경우 대안은 hdmi-stereo-extra1+input:analog-stereo및 입니다 output:analog-stereo+input:analog-stereo. 사용 가능한 프로필을 나열하십시오.

pacmd list-cards | grep "output:" | grep -v "available: no"

답변3

다음과 같이 bash 스크립트에 설정할 수 있는 Pablo A의 유용한 인용문입니다(적어도 GNOME에서는 응용 프로그램 바로 가기로):-

#!/bin/bash

AudJk=$(pacmd list-cards | grep "active profile" | grep "output:" | cut -d " " -f 3-)
HDMI="output:hdmi-stereo+input:analog-stereo"
HdFn="output:analog-stereo+input:analog-stereo"

[[ $AudJk = "<$HDMI>" ]] && pacmd set-card-profile 0 $HdFn || pacmd set-card-profile 0 $HDMI

스크립팅이 처음이지만...

...더 쉽게 이해할 수 있도록 카드 프로필 문자열을 변수로 변환하고 싶으십니까?

...아마도 첫 번째 논리 테스트를 수행하는 더 우아한 방법이 있을 것입니다. [[ $AudJk = "<$HDMI>" ]]이는 최적이 아닐 수도 있습니다.

grep "output:"... pacmd아마도 .

이것이 어떤 사람들에게 도움이 되기를 바랍니다.

관련 정보