입력 채널 수에 따른 자동 전환 PulseAudio 프로파일


39

수신기를 통해 HDMI를 통해 오디오를 실행하고 있는데 7.1 설정이 연결되어 있습니다. 그러나 내가 듣는 대부분의 채널은 채널 수가 훨씬 적습니다. 일부는 모노, 대부분은 스테레오, 비트는 5.1입니다. 수신기에 올바른 수의 채널이 공급되면, 다양한 DSP 효과가 상당히 잘 작동합니다 (예 : 중앙 채널 분리, 서브 우퍼로베이스 전송, Dolby 매트릭스 서라운드 자동 감지 등). 무음 채널이 많은 7.1 신호를 보내면 작동이 중지됩니다.

PulseAudio의 출력 채널 수는 카드에 할당 된 프로필에 따라 카드 / 싱크별로 구성됩니다. 당신은에 할당 된 프로필을 변경할 수 있습니다 pacmd, pactl및 다양한 GUI 프로그램을.

입력 스트림의 채널 사용량에 따라 프로파일을 자동으로 변경하도록 설정하려면 어떻게해야합니까? 예를 들어, 입력 스트림이 전면 왼쪽 및 전면 오른쪽 만 사용하는 경우 스테레오 프로파일로 전환하십시오. 왼쪽과 오른쪽을 사용하는 경우 4 등으로 전환하십시오.


3
어쩌면 내가 틀렸을 수도 있지만, 그것이 실제로 가능하지 않다고 생각합니다. Pulseaudio는 여러 스트림을 한 번에 관리합니다. 채널 번호가 다른 스트림이 함께 재생되는 경우 어떤 프로파일이 올바른가요?
Alessio Gaeta

@meden 채널 수가 가장 많은 것 같습니다.
derobert

물론입니다.하지만 목표를 달성 할 수없는 경우가 있습니다. BTW, Pulseaudio에는 프로파일을 조건부로 전환하는 방법이 없다고 생각합니다. Pulseaudio [ kodi.wiki/view/PulseAudio]에 대한 Kodi 안내서 는 힌트를 제공하는 데 유용 할 수 있습니다 (예 : 패스 스루를 사용하고 수신자가 사용하는 모든 형식을 지원하는 경우 수신자가 모든 작업을 수행하도록 함).
Alessio Gaeta

이것은 흥미로운 질문입니다. 나는 이것을 테스트하는 데 사용할 수있는 오디오 설정을 가지고 있지만하지 않는 작업 주위로, 당신은 당신이 상상 각 인스턴스 설치에 필요한 사전에 스트림을 분석하는 스크립트를 프로필을 만들 것 인 경우에 (의 출력을 grepping에 의해 아마 mediainfo또는 ffmpegavconv) 그런 다음 pacmd플레이어를 시작하기 전에 적절한 프로필을 선택하는 데 사용하십시오. 논리적 관점에서 볼 때 한 번에 하나의 오디오를 재생했다면 작동 할 것으로 예상됩니다.
Geek

4
아직 제출되지 않은 경우 launchpad.net/bugs/bugtrackers/pulseaudio-bugs 에서이 요청을 기능 요청 으로 제출하는 것이 좋습니다. 흥미로운 기능이며 펄스 오디오는 아마도 외부 스크립트를 사용하는 것보다 내부적으로 더 잘 해결할 수 있습니다.
Alexander

답변:


1

이것은 개념 일 뿐이며 완전한 솔루션은 아닙니다.

patcl subscribepulsaudio 클라이언트에 구성을 할당 할 수 있는 경우 (예 : 영화 플레이어가 연결되면 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을 통해 실제로 펄스 오디오 클라이언트의 채널 수를 얻는 방법을 찾지 못했지만 여기에 몇 가지 옵션이 누락되었을 수 있습니다. 또는 비디오 플레이어 응용 프로그램 자체에 연결하여 누락 된 비트를 얻을 수도 있습니다.


함께 pactl list | grep format.channels사용하면 최대를 찾을 수 있어야합니다. 사용 된 채널 수 및 추가 정보 등록 된 이벤트에 의해 트리거 된 스크립트에서 해당 정보를 사용하면 솔루션으로 이어질 수 있습니다.
ridgy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.