재생하기 전에 PulseAudio 재생 장치를 설정하십시오.

재생하기 전에 PulseAudio 재생 장치를 설정하십시오.

나는 두 개의 사운드 카드가 있는 컴퓨터에서 PulseAudio를 사용하여 Debian 9를 실행하고 있습니다. 아래 스크린샷은 오디오가 재생되지 않을 때의 볼륨 조절 애플리케이션을 보여줍니다. 오디오를 재생할 때 출력 장치를 선택할 수 있는 드롭다운 메뉴가 나타납니다. 출력장치를 선택하는 방법이 있나요?앞으로오디오 스트리밍이 시작되었나요? 나에게는 그것이 더 자연스러운 것 같다.

PulseAudio 볼륨 조절

편집: 이것은 나의 일반적인 사용 사례입니다. 데스크탑 스피커(사운드 카드 A)를 통하지 않고 거실 스테레오(사운드 카드 B)에서 내 컴퓨터의 노래를 재생하고 싶습니다. 출력을 미리 선택할 수 없기 때문에 노래를 시작하고 데스크탑 스피커에서 재생한 다음 볼륨 조절 창의 재생 탭에 옵션이 나타나면 거실 스피커를 선택해야 합니다. 이제 원하는 출력을 선택했으므로 노래를 처음부터 재생해야 합니다. 이는 나쁜 사용자 경험입니다.

답변1

기본적으로 PulseAudio는 각 응용 프로그램의 출력이 마지막으로 사용된 방향 위치를 기억하고 별도로 통지될 때까지 해당 출력 장치를 계속 사용하려고 시도합니다. 이전 사용 기록이 없는 경우 대체 장치가 사용됩니다.

이 기능을 비활성화하고 /etc/pulse/default.pa변경 줄을 편집하여 특별히 구성하지 않는 한 모든 응용 프로그램이 항상 대체 장치를 사용하여 시작되도록 할 수 있습니다.

load-module module-stream-restore

이와 관련하여:

load-module module-stream-restore restore_device=false

paswitch또는 각 애플리케이션에 대한 PulseAudio 영구 출력 레코드를 반복하고 지정된 장치를 가리키도록 모두 변경하는 도구가 있습니다 .https://www.tablix.org/~avian/git/paswitch.git(자세한 내용은 여기를 참조하세요)

답변2

Pulseaudio 재생은 먼저 기본 수신기 장치를 사용하려고 시도하고,
기본값을 사용할 수 없는 경우 대체 장치가 사용됩니다.

장치가 2개뿐인 경우 그 중 하나를 기본 장치로 설정하세요. 기본 장치를 사용할 수 없으면 두 번째 장치가 자동으로 백업됩니다.

pavucontrol기본 수신기 설정 표시 안 함

다음 터미널 명령을 사용할 수 있습니다.
pactl get-default-sink- 기본 수신기 이름 표시
pactl list sinks | grep 'Name'- 모든 활성 수신기의 이름 표시
및 사용 pactl set-default-sink <Name>- 기본 수신기 변경
(텍스트 편집기를 사용하여 첫 번째 명령에서 기본 수신기 파일을 변경할 수도 있음)

또는 pasystrayGUI에서 정보를 보고 필요한 경우 기본값을 변경하려면

기본값을 설정한 후 사용자는 pavucontrol다른 수신기를 사용하도록 오디오 스트림을 설정할 수 있습니다.
사용자 변경 사항은 pavucontrol~/.config/pulse/ 폴더의 데이터베이스 파일에 저장됩니다.

답변3

다음은 telcoM과 nik gnomic의 답변을 사용한 완벽한 솔루션입니다. PulseAudio가 각 응용 프로그램에서 사용된 마지막 사운드 카드를 기억하지 못하도록 먼저 다음을 복사 /etc/pulse/default.pa하고 ~/.config/pulse/추가했습니다 restore_device=false.

sed 's/load-module module-stream-restore.*/load-module module-stream-restore restore_device=false/' /etc/pulse/default.pa > ~/.config/pulse/default.pa

다음으로 zenity 명령을 사용하여 간단한 대화 상자를 만들었습니다.

#!/bin/sh

set -o errexit -o nounset

defaultCard="$(pactl get-default-sink)"

options="$(pactl list sinks \
    | awk -F': *' -v defaultCard="$defaultCard" \
        '/Name:/ { if ($2 == defaultCard) { printf "TRUE " } else { printf "FALSE " }; printf "%s ", $2 } \
        /Description:/ { print "\"" $2 "\"" }' \
    | sort -k 3 \
    | tr '\n' ' ')"

# quoted strings in `options' requres `eval'
newDefaultCard="$(eval zenity --list --radiolist --title=\"Sound Card Selection\" --text=\"Select a sound card to use\" --hide-header --hide-column=2 --width=330 --height=160 --column= --column= --column= $options)"

pactl set-default-sink "$newDefaultCard"

결과는 다음과 같습니다.

사운드 카드 선택기

관련 정보