모니터 스피커와 헤드폰 간 자동 전환

모니터 스피커와 헤드폰 간 자동 전환

내 노트북:

  • Windows 10(버전 20H2)을 실행합니다.
  • 스피커가 내장되어 있습니다
  • 헤드폰용 잭 포트가 있습니다
  • 일반적으로 스피커가 있는 모니터에 연결됩니다.

나는 소리가 오기를 원한다:

  • 헤드폰에서(연결된 경우)
  • 모니터에서(연결되어 있고 헤드폰이 없는 경우)
  • 내장 스피커에서, 다른 것이 연결되어 있지 않은 경우

이에 따라 재생 장치를 자동으로 전환할 수 있는 방법이 있나요?


이것이 사소하지 않은 이유

단순한 기본 오디오 출력 구성으로는 이 작업을 수행할 수 없다고 생각합니다. 오디오 출력 장치의 모양이 다음과 같기 때문입니다. 재생 장치

내가 원하는 재생 우선순위는 입니다 1. Headphones, 2. Monitor, 3. Built-in speaker. 노트북의 내장 스피커와 헤드폰(두 번째 장치는 모니터) 모두에 대해 재생 장치가 하나뿐이므로 우선순위를 단순히 각 장치에 개별적으로 설정할 수는 없습니다.

답변1

아래 스크립트는 테스트되지 않았으며 확실히 귀하의 환경에서는 아니지만 도움이 될 수 있습니다.

여기서는 세 가지 도구를 사용합니다.

먼저 도구를 다운로드하고 해당 폴더에 압축을 풉니다.

그런 다음 세 장치가 모두 연결되어 있는 동안 매개변수 없이 AEPC를 실행하면 해당 장치의 이름이 나열됩니다. 이름을 기록해 두거나 최소한 이름 안에 식별 가능한 하위 문자열을 적어 두십시오. 이 시점에서는 "스피커/헤드폰"이 하나 또는 두 개의 장치로 나열되는지 알 수 없습니다. 하나의 장치인 경우 헤드폰이 자동으로 우선순위를 가지며 스크립트를 줄여야 한다고 가정합니다. 내 스크립트에서는 세 개의 장치를 가정하지만 해당 이름은 AEPC를 실행할 때까지 추측일 뿐입니다.

AutoHotKey 설치 후 아래 텍스트를 .ahk파일에 넣고 더블클릭하여 테스트해 보세요. 트레이바에 있는 녹색 H 아이콘을 마우스 오른쪽 버튼으로 클릭하고 종료를 선택하여 스크립트를 중지할 수 있습니다. 로그인 시 실행되도록 하려면 시작 그룹의 에 배치하십시오 C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.

아래에서 사용된 문자열을 확인하고 교체하세요. findstr 명령:

#Persistent                         ; prevents the script from exiting when it reaches 'return'

SetTimer, detectDevices, 1000       ; check every second
return

detectDevices:                      ; this is the timer routine
RunWait,  %ComSpec% /c "C:\Temp\AudioEndPointController\Release\EndPointController.exe" | findstr Headphone
if (%ErrorLevel% = 0) {             ; found headphone
    Run, "C:\Program Files\Nirsoft Package\NirSoft\x64\nircmd.exe" setdefaultsounddevice Headphones
} else {
    RunWait,  %ComSpec% /c "C:\Temp\AudioEndPointController\Release\EndPointController.exe" | findstr Monitor-device
    if (%ErrorLevel% = 0) {         ; found monitor device
        Run, "C:\Program Files\Nirsoft Package\NirSoft\x64\nircmd.exe" setdefaultsounddevice Monitor-name
    } else {                        ; only speaker is left
        Run, "C:\Program Files\Nirsoft Package\NirSoft\x64\nircmd.exe" setdefaultsounddevice Speaker
    }
}
Return                               ; end of timer routine

답변2

이는 작업 스케줄러에 내장된 창을 사용하여 가능합니다. PC의 하드웨어 수준이 변경될 때마다 Windows 로그에 이벤트가 발생합니다. 작업 스케줄러는 이미 이 로그를 수신하므로 다른 이벤트만 찾아도 성능 차이를 느낄 수 없습니다. 나는 찾았다이 포럼 항목비슷한 문제를 설명하고우리 노르웨이해결 방법을 아주 잘 설명해 주셨네요. 이 솔루션을 사용하면 모니터를 연결할 때 실행되는 작업을 만든 다음 오디오 장치를 변경하는 스크립트를 시작할 수 있습니다. 더 깊은 연구 없이는 cmd나 powershell로 이를 수행할 수 있는 방법을 찾지 못했지만, 더 많은 시간을 투자하면 찾을 수 있을 것이라고 생각합니다. 내가 찾은 유일한 것은이 게시물StackOverFlow에서는 몇 가지 솔루션이 제시되며 일부는 매우 간단한 스크립팅 언어인 AutoHotKey를 사용합니다.

이것이 도움이 되기를 바랍니다. 나중에 더 많은 것을 찾을 수 있을 것입니다. 이것도 제가 겪은 문제이므로 답변을 업데이트하겠습니다.

답변3

개인적으로 내 직감에 따르면 소프트웨어 전용 경로를 따라가면 이 문제로 영원히 씨름하게 될 수도 있습니다.

출력 장치를 자동으로 구성하는 소프트웨어는 가능하다고 생각하지만 원하는 작업을 수행할 수 있는 소프트웨어는 하나도 없으며 소프트웨어 솔루션이 작동한다면 많은 것을 낭비하게 될 것이라고 생각합니다. 설정하고 유지하는 데 시간이 걸립니다. 더 안정적이고 쉽게 구성할 수 있는 하드웨어 솔루션을 사용해 봐야 한다고 생각합니다. 몇 가지 옵션은 다음과 같습니다.

  1. 거의 모든 화면에는 입력 오디오 잭이 있습니다. 많은 제품에는 출력 오디오 잭도 있습니다. 모니터에 출력 잭이 있는 경우 화면을 기본 오디오로 설정하고 헤드폰을 화면의 출력 오디오에 연결하는 것이 좋습니다. 따라서 헤드폰을 연결하면 헤드폰에서 소리가 나고, 플러그를 뽑으면 화면에서 소리가 나고, 화면을 분리하면 노트북에서 소리가 나옵니다. (화면 설정을 확인하세요. 외부 장치가 연결되어 있을 때 화면 스피커가 계속 재생되는지 여부에 대한 옵션이 있을 수 있습니다.)

  2. 비슷한 옵션이지만 오디오 확장 리드를 구해 노트북을 기본값으로 설정하고 노트북의 리드를 화면 입력 잭에 연결하세요. 헤드폰을 사용하려면 노트북에서 확장 장치를 분리하고 헤드폰을 연결하기만 하면 됩니다.

  3. 제가 추천하고 싶은 두 번째 옵션은 오디오 스위치나 외부 사운드 카드를 구입하는 것입니다. 음질이 중요하다고 생각하시나요? 그렇다면 어느 시점에서는 음질 향상을 위해 좋은 사운드 카드를 구입하고 싶을 수도 있습니다. 지금 실행하여 두 가지 문제를 동시에 해결하세요. 필요한 것은 최소 2개의 출력이며, 어떤 출력을 선택할 것인지 수동 스위치로 선택할 수 있습니다. 수많은 옵션이 있으며 오디오 스위치는 훨씬 저렴하지만 수동 스위치와 버튼이 있는 하드웨어일 뿐입니다.

더 많은 도움이 되었으면 좋겠지만 PC에서 몇 가지 테스트를 수행했는데 동일한 문제입니다. 플러그를 꽂거나 뽑을 때 출력을 자동으로 변경하는 것은 고통스러운 일입니다. 그것이 나였다면 하드웨어 경로를 택했을 것입니다. 시각적으로 보기 좋지 않을 수도 있지만 이것이 가장 신뢰할 수 있는 옵션이라고 생각합니다.

관련 정보