수신기를 통해 HDMI를 통해 오디오를 실행하고 있는데 7.1 설정이 연결되어 있습니다. 그러나 내가 듣는 대부분의 채널은 채널 수가 훨씬 적습니다. 일부는 모노, 대부분은 스테레오, 비트는 5.1입니다. 수신기에 올바른 수의 채널이 공급되면, 다양한 DSP 효과가 상당히 잘 작동합니다 (예 : 중앙 채널 분리, 서브 우퍼로베이스 전송, Dolby 매트릭스 서라운드 자동 감지 등). 무음 채널이 많은 7.1 신호를 보내면 작동이 중지됩니다.
PulseAudio의 출력 채널 수는 카드에 할당 된 프로필에 따라 카드 / 싱크별로 구성됩니다. 당신은에 할당 된 프로필을 변경할 수 있습니다 pacmd
, pactl
및 다양한 GUI 프로그램을.
입력 스트림의 채널 사용량에 따라 프로파일을 자동으로 변경하도록 설정하려면 어떻게해야합니까? 예를 들어, 입력 스트림이 전면 왼쪽 및 전면 오른쪽 만 사용하는 경우 스테레오 프로파일로 전환하십시오. 왼쪽과 오른쪽을 사용하는 경우 4 등으로 전환하십시오.
답변
이것은 개념 일 뿐이며 완전한 솔루션은 아닙니다.
patcl subscribe
pulsaudio 클라이언트에 구성을 할당 할 수 있는 경우 (예 : 영화 플레이어가 연결되면 7.1 구성으로 전환하고, 그렇지 않으면 스테레오 구성을 사용) 이벤트를 직접 처리 할 수 있습니다. 에서 patcl subscribe
클라이언트 스트림을 관찰하여 처리 할 수 있는 일정의 이벤트 스트림을 받습니다. 그런 다음 pactl / pacmd를 호출하여 프로필을 변경할 수 있습니다.
pactl subscribe의 출력 예 :
$ pactl subscribe
Event 'change' on sink #0
Event 'remove' on sink-input #93
Event 'change' on sink #0
Event 'change' on source #0
Event 'change' on sink #0
Event 'change' on source #0
Event 'new' on sink-input #98
Event 'change' on sink-input #98
채널 수가 다른 여러 클라이언트가있는 경우를 처리하는 데 여전히 문제가 있습니다.
또한, 위의 접근 방식은 다소 제한적입니다. 애플리케이션 별 설정으로는 실제 사용 된 애플리케이션 채널 수를 감지하기에 충분하지 않습니다 (예 : vlc는 5.1 또는 7.1 비디오를 재생할 수 있음). pactl을 통해 실제로 펄스 오디오 클라이언트의 채널 수를 얻는 방법을 찾지 못했지만 여기에 몇 가지 옵션이 누락되었을 수 있습니다. 또는 비디오 플레이어 응용 프로그램 자체에 연결하여 누락 된 비트를 얻을 수도 있습니다.