PulseAudio는 기본 수신기를 사용하지 않습니다.

PulseAudio는 기본 수신기를 사용하지 않습니다.

Kubuntu 18.04가 설치된 미니 HP 컴퓨터가 있는데, 여기에는 형편없는 내장 스피커와 HDMI 포트가 있습니다. 모든 오디오가 항상 활성 HDMI 포트를 통과하기를 원하지만 어떤 이유로 일부 응용 프로그램의 경우 PulseAudio는 항상 오디오가 내장 스피커를 통과하기를 원합니다.

인덱스 0이 기본값입니다.

$ pacmd list-sinks | grep -e 'name:' -e 'index:'
  * index: 0
        name: <alsa_output.pci-0000_0a_00.1.hdmi-stereo-extra1>
    index: 1
        name: <alsa_output.pci-0000_0a_00.6.analog-stereo>

하지만 일부 응용 프로그램을 실행할 때:

$ pactl list short sinks
0       alsa_output.pci-0000_0a_00.1.hdmi-stereo-extra1 module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
1       alsa_output.pci-0000_0a_00.6.analog-stereo      module-alsa-card.c      s16le 2ch 44100Hz       RUNNING

그리고 나는 그것을 바꿀 수 없습니다!

$ pacmd list-sink-inputs | grep available -A 1
1 sink input(s) available.
    index: 7
$ pacmd move-sink-input 7 0
Moved failed.
$ pactl move-sink-input 7 0
Failure: Invalid argument

결함에 대한 추가 정보를 어떻게 얻을 수 있나요? 이러한 오류 메시지는 유용한 정보를 제공하지 않습니다.

답변1

부분 답변:

Pulseaudio는 수신기에 연결된 모든 애플리케이션의 데이터베이스를 유지하고 기본 수신기를 사용하는 대신 시작 시 이 연결을 다시 시작합니다. 기본 수신기는 "새" 애플리케이션에만 사용됩니다.

왜 실패했는지 모르겠습니다 move-sink-input. 그것을 옮길 수 있나요 pavucontrol?

편집하다

OpenAL 코드는 MonoGame의 github 저장소에서 찾을 수 있습니다. "OpenAL Pulse Audio"에 대한 Google 검색에 따르면 OpenAL의 기본 설정은 수신기 이동을 비활성화하지만 ~/.alsoftrc콘텐츠가 포함된 파일을 생성합니다.

[pulse]

allow-moves = true

이는 허용됩니다. 나는 그것을 직접 테스트하지 않았습니다.

편집하다

시작 시 기억된 수신기를 복원하는 경우,.alsoftrc옵션 목록에는 적용 가능한 항목이 표시되지 않습니다.

펄스오디오의 경우,모듈 스트림 복원스트림 소스/싱크 복구를 처리합니다. GDBM 도구를 사용하여 데이터베이스를 볼 수 있도록 이를 GDBM 데이터베이스 파일에 저장합니다. 내가 아는 한, Pulseaudio라는 애플리케이션 이름이 사용되지만(하지만 다시 확인하는 것이 더 좋음) 역할을 잘 이해하지 못하는 복잡한 시스템도 있습니다.

따라서 OpenAL과의 상호 작용을 디버깅해야 합니다. OpenAL이 애플리케이션 이름을 지정하지 않을 수도 있고, OpenAL이 module-stream-restore의 기능을 재정의하고 기본 싱크만 선택할 수도 있고, 다른 것일 수도 있습니다. OpenAL 소스 코드를 살펴보면 도움이 될 것입니다.

물론 해결 방법은 OpenAL 애플리케이션을 시작한 다음 실행하는 작은 래퍼 스크립트를 작성하는 것입니다 move-sink. 아마도 더 빨리 완료될 것입니다.

관련 정보