쉘을 사용하여 다른 오디오 출력 하드웨어 간을 전환하는 방법은 무엇입니까?

쉘을 사용하여 다른 오디오 출력 하드웨어 간을 전환하는 방법은 무엇입니까?

저는 스피커가 있는 외부 모니터와 함께 노트북을 사용합니다. 모니터가 HDMI를 통해 연결되면 일반 노트북 오디오 출력과 모니터 출력 간에 전환할 수 있습니다(GUI: 사운드 설정 --> 하드웨어 사용).

나는 이 프로세스를 여러 번 반복했고 이를 자동화할 수 있는지, 아니면 어쨌든 셸을 사용하여 더 빠른 방법으로 수행할 수 있는지 궁금해하기 시작했습니다.

내 배포판은 gnome 3이 포함된 Ubuntu 12.04입니다.

편집하다:

pacmd를 사용해 보았지만 list-sink는 현재 사용 중인 장치만 제공합니다.

pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.hdmi-stereo>

GUI에서 전환한 후:

pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>

변경하려고 하면 다음과 같은 결과가 나타납니다.

pacmd set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
Welcome to PulseAudio! Use "help" for usage information.
Sink alsa_output.pci-0000_00_1b.0.hdmi-stereo does not exist.

답변1

이 경우 카드는 항상 동일합니다. 한 스위치에서 다른 스위치로 변경되는 것은 "카드 프로필"입니다.

따라서 작동하는 실제 솔루션은 다음과 같습니다.

pacmd set-card-profile <cardindex> <profilename>

내 경우에는 모든 카드 프로필을 찾았습니다.

pacmd list-cards

다음을 통해 모니터와 노트북 스피커 간에 전환할 수 있습니다.

pacmd set-card-profile 0 output:hdmi-stereo

그리고:

pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo

여기서 0은 카드의 인덱스입니다.

pacmd list-cards
Welcome to PulseAudio! Use "help" for usage information.
>>> 1 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_00_1b.0>

마지막으로 더 빠르게 전환하기 위해 .bashrc 파일에 두 개의 별칭을 설정했습니다.

alias audio-hdmi='pacmd set-card-profile 0 output:hdmi-stereo+input:analog-stereo'
alias audio-laptop='pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo'

이렇게 하면 셸에 audio-hdmi 또는 audio-laptop을 입력하여 모니터 또는 노트북(헤드폰)의 오디오 간에 전환할 수 있습니다.

답변2

나는 사운드 출력을 전환할 수 있는 작은 표시기 애플릿을 작성했습니다. 쉘 스크립트는 없지만 귀하나 다른 독자에게 도움이 될 수 있습니다.

https://github.com/lkettenb/sound-output-switcher

스크린샷

답변3

나는 오디오뿐만 아니라 비디오 출력도 전환하는 이전 스크립트를 기반으로 매우 작은 스크립트를 만들었습니다. 그것은 사용한다분산디스플레이 간을 전환합니다.

코드는 다음과 같습니다.

#!/bin/bash

CURRENT_PROFILE=$(pacmd list-cards | grep "active profile" | cut -d ' ' -f 3-)

if [ "$CURRENT_PROFILE" = "<output:hdmi-stereo>" ]; then
        pacmd set-card-profile 0 "output:analog-stereo+input:analog-stereo"
        disper -s
else 
        pacmd set-card-profile 0 "output:hdmi-stereo"
        disper -S        
fi

저는 모니터 복제를 좋아하지 않기 때문에 특히 유용합니다. 나는 둘 중 하나를 사용합니다. 특정 시스템에 맞게 오디오 프로필을 조정해야 할 수도 있습니다.

답변4

다음 스크립트를 시도해 볼 수 있습니다.https://github.com/giner/helplinux/tree/master/scripts/switch-sound

Ubuntu 10.04 - 13.04 및 Arch Linux에서 테스트되었습니다.

관련 정보