오디오 출력 장치, 빠른 스위치? 장치로 작동합니다. 현재 오른쪽 상단

상황에 따라 오디오 출력을 위해 스피커 또는 헤드셋을 사용합니다. 내 헤드셋이 USB 헤드셋 인 경우 자체 오디오 장치로 작동합니다.

현재 오른쪽 상단 트레이의 스피커 아이콘을 클릭하여 오디오 출력 장치를 전환합니다. 여기서 사운드 설정을 선택하고 출력 탭으로 이동하여 원하는 장치를 선택합니다.

USB 헤드셋으로 전환하는 더 쉽고 빠른 방법이 있는지 궁금합니다. 아마도 전용 트레이 아이콘, 키 매핑 등일까요?

기본 Gnome 데스크탑으로 Ubuntu 10.04를 실행하고 있습니다.



답변

명령 행에서 기본 오디오 출력 장치를 변경하기 위해 pacmdPulse Audio 명령 행 유틸리티를 사용할 수 있습니다 .

헤드폰과 스피커를 모두 별도의 오디오 카드에 꽂고 싶을 때 오늘날에도 마찬가지로해야 할 일이 있습니다. 내가 작성한 쉘 스크립트는 다음과 같습니다.

#!/usr/bin/env bash

sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))

[[ ${sinks[0]} = 0 ]] && swap=${sinks[1]} || swap=${sinks[3]}

pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

노트:

  • pacmd유틸리티가 나열 하는 처음 두 개의 오디오 출력 장치 사이를 전환 합니다. 오디오 장치가 두 개 이상 있고 다른 장치로 바꾸려면 7 행의 논리를 일부 조건으로 바꿔야합니다.
  • 기본 싱크 장치를 바꾸는 것만으로 현재 실행중인 응용 프로그램에는 아무런 영향을 미치지 않으며 이전 장치로 계속 출력됩니다. 이 스크립트는 또한 모든 기존 입력에 대한 싱크 대상을 이동합니다. 즉, 한 장치에서 음악을 재생하면서이 스크립트를 실행하면 즉시 다른 장치로 교체됩니다. 기존 응용 프로그램을 이전 장치에서 계속 사용하려면 마지막 줄 (및 원하는 경우 5 줄)을 주석 처리하십시오.

답변

글쎄, 당신은 설치할 수 있습니다 pavucontrol, 그것은 첫 번째 탭에서 사운드 장치 선택이있는 앱을 보여줍니다. 그러나 당신이 정말로 원하는 것은 USB 헤드셋을 기본 장치로 표시하는 것입니다. 그러면 모든 사운드를 연결할 때마다 모든 사운드가 리디렉션되고 스피커를 다시 연결할 때 스피커로 돌아갑니다. 정말 쉬워요.


답변

질문은 꽤 오래되었지만 그놈 2 사용자에게는 여전히 답이 유용 할 수 있습니다. 여기에 설명 된 정확한 문제에 PulseAudio Mixer Applet 을 사용 했습니다. 패널 메뉴에서 바로 입력 및 출력 장치를 변경할 수 있습니다. 내가 찾은 가장 편리한 방법입니다.


답변

물론 애플릿을 사용하여 장치를 전환하는 것도 잘 작동합니다. 그러나 스크립트 작성에 대한 멋진 점은 매우 빠릅니다. 예를 들어 키보드 단축키 alt + s를 예로 들겠습니다. 따라서 헤드폰에서 스피커로 전환하려면 alt + s 만 누르면됩니다.

어쨌든. 앤드류는 말했다 :

오디오 장치가 두 개 이상 있고 다른 장치로 교체하려는 경우 7 행의 논리를 일부 조건으로 바꿔야합니다.

그것이 내가 한 일입니다. 누군가가 문제가있는 경우를 대비하여 공유합니다.

#!/usr/bin/env bash

#sinks=($(pacmd list-sinks | grep index | \
#    awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
sinks=($(pacmd list-sinks | grep index | \
    awk '{ if ($1 == "*") print "1"; else print "0" }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))

#find active sink
active=0
for i in ${sinks[*]}
do
    if [ $i -eq 0 ]
        then active=$((active+1))
        else break
    fi
done

#switch to next sink
swap=$(((active+1)%${#sinks[@]}))

pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done

내가 다르게 한 것은 a) for 루프에서 활성 싱크를 찾는 것입니다. 그리고 b) 인덱스를 1 씩 증가시켜 다음 싱크로 전환합니다. 그런 다음 싱크 수로 결과를 모듈로 계산합니다. 예를 들어 싱크가 3 개인 경우 (2 + 1) % 3 = 0입니다. 따라서 싱크 인덱스 2에서 싱크 인덱스 0으로 전환합니다.

이러한 방식으로 스위치는 사용 가능한 싱크를 통해 위쪽으로 이동할 수 있습니다.


답변

스크립트 주셔서 감사합니다! 누구나 사용하기를 원하는 경우 입력 (마이크) 부분을 추가했습니다.

while read line ; do
  case $line in
    *\*\ index*) x=1 ;;
    index*) x=0 ;;
    name*)
      source=$(echo $line | sed -e "s/.*<//;s/>.*//")
      if [[ $x = "0" ]] ; then
        pacmd set-default-source $source &> /dev/null
      fi ;;
  esac
done < <(pacmd list-sources | grep -e alsa_input -e index)

답변

사운드 장치 목록을 순환하려면 다음 스크립트를 사용하십시오.

#!/bin/bash

declare -i sinks=(`pacmd list-sinks | sed -n -e 's/\**[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`)
declare -i sinks_count=${#sinks[*]}
declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/\*[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`
declare -i next_sink_index=${sinks[0]}

#find the next sink (not always the next index number)
declare -i ord=0
while [ $ord -lt $sinks_count ];
do
echo ${sinks[$ord]}
if [ ${sinks[$ord]} -gt $active_sink_index ] ; then
    next_sink_index=${sinks[$ord]}
    break
fi
let ord++
done

#change the default sink
pacmd "set-default-sink ${next_sink_index}"

#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]\)/\1/p');
do
pacmd "move-sink-input $app $next_sink_index"
done

#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)"/\1/p' | while read line;
do
if [ $(( $ord % $sinks_count )) -eq $ndx ] ; then
    notify-send -i notification-audio-volume-high --hint=string:x-canonical-private-    synchronous: "Sound output switched to" "$line"
    exit
fi
let ndx++
done;

모든 크레딧은 우분투 포럼 에서 tsvetan으로갑니다 .


답변

랩톱의 내부 스피커와 내 스테레오에 연결된 애플 공항 기지국 사이를 전환하는 방법을 찾고있었습니다 . 스위치에 단축키를 할당하기로 결정했습니다. 오디오 기본 설정 창을 잠깐 동안 팝업하여 스위치를 시각적으로 확인하고 wmctrl을 사용하여 창을 닫았습니다.

(노트북에서 이러한 키의 Fn 기능은 볼륨을 높이고 낮추는 것이므로 Ctrl 기능이 오디오 출력을 변경하는 것이 분명해 보이기 때문에 ctrl + F8 및 ctrl + F9를 단축키로 사용했습니다.)

다음과 같은 2 개의 스크립트를 사용했습니다.

#! /bin/bash
gnome-volume-control -p output &
sleep .7
pacmd set-default-sink 1
sleep .8
wmctrl -c "Sound Preferences"
exit

#! /bin/bash
gnome-volume-control -p output &
sleep .7
pacmd set-default-sink 0
sleep .8
wmctrl -c "Sound Preferences"
exit

첫 번째는 애플베이스 스테이션 (Ctrl + F9에 할당)으로 변경되고 두 번째는 내부 스피커 (ctrl + F8)로 다시 전환됩니다. 이것은 이것들이 설치된 유일한 2 개의 출력 장치라고 가정합니다.