HDMI를 통한 7.1 서라운드 사운드에 대해 PulseAudio를 구성하려면 어떻게합니까?


10

기기를 HDMI를 통해 수신기에 연결했습니다. 그러나 PulseAudio와 함께 두 개 이상의 채널을 사용하려고하면 두 개만 얻습니다. pacmd list cards카드는 표시되지만 채널이 두 개 이상인 HDMI 프로파일은 표시되지 않습니다.

ALSA를 통해 7.1 사운드가 작동 함을 확인했습니다.

pasuspender -- speaker-test -D hdmi -c 8 -m FL,FC,FR,RR,RRC,RLC,RL,LFE

방을 돌아 다니는 정적을 생성합니다.

답변:


20

PulseAudio에서 각 사운드 카드에는 연결된 프로필 세트가 있습니다. 프로파일 세트에는 여러 개의 프로파일이 포함되어 있으며 이는 카드를 나열 할 때 (또는 다양한 PulseAudio GUI를 볼 때 표시되는) 프로파일입니다.

default아날로그 사운드 출력에 유용한 것들이 포함 된 프로파일 이 있습니다 . extra-hdmi일부 HDMI 출력에 자동으로 적용되는 프로파일 도 있으며 최대 5.1 개의 옵션을 제공합니다. 이 두 프로필은 모두 불행히도에 /usr/share/pulseaudio/alsa-mixer/profile-sets있으므로 실제로 편집 할 수 없습니다 ( 이 문제 에 대해서는 디버그 버그 736708을 제출 했습니다). 설명서에 따르면 udev 기반 자동 검색을 비활성화하고 모든 것을 수동으로 구성 할 수 있습니다. 프로필의 전체 경로. 그러나 문서화되지 않은 동안 udev도 전체 경로를 지정할 수 있습니다.

프로파일 세트를 지정하기위한 udev 규칙 설정

PULSE_PROFILE_SETudev 환경 변수를 설정하여 udev 규칙에 프로파일 세트를 지정 합니다. 위에서 언급 한 /usr하위 디렉토리 의 파일 만 가져 오도록 문서화 되었지만 전체 경로도 작동합니다. 내 경우에는이 규칙을 만들었습니다.

# cat /etc/udev/rules.d/95-local-pulseaudio.rules 
ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1c20", ENV{PULSE_PROFILE_SET}="/etc/pulse/my-hdmi.conf"

에서 얻을 수있는 적절한 PCI 공급 업체 및 장치 번호를 사용해야합니다 lspci -nn.

udev 규칙을 생성 한 후로 즉시 적용 할 수 있습니다 udevadm trigger -ssound. 아마도 initramfs를 다시 빌드하고 싶을 것입니다 ( update-initramfs -u)

udev 규칙이 적용되었는지 확인하십시오 udevadm info --query=all --path /sys/class/sound/card0(물론 적절한 카드 번호를 사용하십시오). E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.conf출력에서 볼 수 있습니다. 그렇지 않으면 계속하지 마십시오. 작동하지 않습니다. udev 규칙에 문제가 있거나 트리거하지 않았을 수 있습니다. 항상 재부팅을 시도 할 수 있습니다.

/etc/pulse/my-hdmi.conf 파일을 만듭니다

참고 : 채널 맵은 시스템에 따라 다릅니다. 시스템에 적합하도록 실험해야합니다. 7.1 레이아웃은 5.1, 4.0 등을 빌드하기 위해 최종 항목을 삭제하는 것과 관련이 있습니다. 지침은 다음과 같습니다.

이것은 주로 많은 복사 및 붙여 넣기입니다. 각 섹션은 (a) 이름, (b) 설명, (c) 채널 맵, (d) [선택 사항] 우선 순위가 다릅니다.

[General]
auto-profiles = yes

[Mapping hdmi-stereo]
device-strings = hdmi:%f
channel-map = front-left,front-right
description = Digital Stereo (HDMI)
priority = 4
direction = output
paths-output = hdmi-output-0

[Mapping hdmi-surround-40]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right
description = Digital Quadrophonic (HDMI)
priority = 1
direction = output
paths-output = hdmi-output-0

[Mapping hdmi-surround-51]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
description = Digital Surround 5.1 (HDMI)
priority = 2
direction = output
paths-output = hdmi-output-0

[Mapping hdmi-surround-71]
description = Digital Surround 7.1 (HDMI)
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
priority = 3
direction = output
paths-output = hdmi-output-0

이제 이것을 테스트하려면 :

  1. pulseaudio -k사용자 별 데몬 (기본값)을 사용한다고 가정하면 PulseAudio :를 일반 사용자로 다시 시작하십시오 . 다시 시작하면 간단한 aplay -l것 조차 효과 가 있습니다.
  2. 7.1 프로파일로 전환하십시오. 개인적으로, 나는 이것을 사용 pactl set-card-profile 0 "output:hdmi-surround-71"했지만 GUI도 완벽하게 작동합니다.
  3. 를 실행하십시오 speaker-test -c 8 -t w. 스피커 이름을 알리기 시작해야합니다. 각 스피커에서 올바른 이름이 나오기를 바랍니다. 이름이 올바른 스피커에서 나오지 않으면 채널 맵을 변경하여 이름을 올바르게 지정해야합니다. 각 채널 맵 변경 후 PulseAudio를 다시 시작해야합니다.

보너스! 더 유용한 설정

에서 /etc/pulse/daemon.conf, 몇 가지 설정이 있습니다 당신은 변경할 수 있습니다 :

enable-remixing— 켜져 있으면 스테레오 신호에 왼쪽 채널 3 개 모두에서 왼쪽 채널이 재생되고 오른쪽 스피커에서 오른쪽 채널이 재생됩니다. 꺼져 있으면 앞면 2 개만 나옵니다. 프로파일을 스테레오로 변경할 수도 있습니다 (HDMI 포트로 스테레오 사운드 만 전송하고 수신기가 스피커에 매핑하는 방법을 결정하게 함).

enable-lfe-remixing — 유사하지만 LFE (서브 우퍼) 채널로 리믹스합니다.

default-sample-format— HDMI 설정이 16 비트보다 큰 오디오를 지원하면이 값을 s32le(기본값에서 s16le) 늘리십시오 .

default-sample-rate, alternate-sample-rate— 일반적으로 48KHz 인 DVD 소스 자료를 주로 사용하는 경우 이들을 바꾸거나 44.1KHz를 완전히 비활성화 할 수도 있습니다. 또는 HDMI 수신기가 지원하는 경우 최대 192KHz까지 갈 수 있습니다. 176KHz는 44.1과 48KHz의 짝수 배수라는 좋은 특성을 가지고 있습니다. 수신기가 지원하는 것을 결정하는 방법은 아래를 참조하십시오.

default-sample-channels— 문제가되지 않는 것 같습니다. 프로필이 아마도 그것을 무시할 것입니다 ...

당연히이 파일을 변경 한 후에 PulseAudio를 다시 시작해야합니다.

다시 보너스! 수신기가 지원하는 기능 확인

HDMI 링크의 다른 쪽 끝에서 지원한다고 주장하는 eld.*파일 이 있습니다 /proc/asound. 예를 들면 다음과 같습니다.

# cat /proc/asound/card0/eld#3.0 
monitor_present         1
eld_valid               1
monitor_name            TX-SR606
connection_type         HDMI
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0xcb3d
product_id              0x863
port_id                 0x0
support_hdcp            0
support_ai              1
audio_sync_delay        0
speakers                [0x4f] FL/FR LFE FC RL/RR RLC/RRC
sad_count               8
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad0_bits               [0xe0000] 16 20 24
sad1_coding_type        [0x1] LPCM
sad1_channels           8
sad1_rates              [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad1_bits               [0xe0000] 16 20 24
sad2_coding_type        [0x2] AC-3
sad2_channels           8
sad2_rates              [0xe0] 32000 44100 48000
sad2_max_bitrate        640000
sad3_coding_type        [0x7] DTS
sad3_channels           8
sad3_rates              [0xc0] 44100 48000
sad3_max_bitrate        1536000
sad4_coding_type        [0x9] DSD (One Bit Audio)
sad4_channels           6
sad4_rates              [0x40] 44100
sad5_coding_type        [0xa] E-AC-3/DD+ (Dolby Digital Plus)
sad5_channels           8
sad5_rates              [0xc0] 44100 48000
sad6_coding_type        [0xb] DTS-HD
sad6_channels           8
sad6_rates              [0x1ec0] 44100 48000 88200 96000 176400 192000
sad7_coding_type        [0xc] MLP (Dolby TrueHD)
sad7_channels           8
sad7_rates              [0x1480] 48000 96000 192000

따라서 수신기가 최대 8 개의 채널, 192KHz, 24 비트 사운드에서 LPCM (Linear PCM, 즉 압축되지 않은 오디오)을 지원함을 알 수 있습니다. 또한 AC3, DTS, DSD, DD +, DTS-HD 및 Dolby TrueHD도 지원합니다. 따라서 인코딩 된 파일이 있으면 해당 형식을 통과 할 수 있습니다 (미디어 플레이어가 지원하는 경우 물론 가능합니다 mpv).


이것에 대해 백만 감사, 설정과 함께 한동안 고투하고 있었다. 나를 위해 udev 규칙이 먼저 적용되지 않았으므로 PC를 다시 시작해야했습니다. 하나의 문제 .. @derobert X265, 7.1 오디오 스트림을 통과 할 수없는 것 같습니다. PC를 사용하여 디코딩하고 오디오 스트림을 전송하면됩니다. (제 수신기는 5.1입니다.) 제안 사항이 있습니까? 감사!
dimuthu

@dimuthu H.265 (x265)는 오디오 코덱이 아닌 비디오 코덱입니다. PulseAudio는 패스 스루에 대한 지원이 제한적이며 활성화되어 있어야하며 (GUI를 사용하면 가장 쉬움) 스테레오로 설정해야합니다 (채널 통과에 대한 실제 제한이 아닌 패스 스루 작동 방식의 구현 세부 사항 만). ). Kodi 위키의 세부 사항이 담긴 페이지를 떠올리는 것 같습니다.
derobert

1
@ dimuthu (두 번째 코멘트에 대해 죄송합니다. SE 앱이 편집하려고 충돌합니다 ...) 5.1 수신기가 AC3 및 DTS 만 지원한다고 생각합니다. 예를 들어 AAC가 아닙니다. 수신기에서 다중 채널 PCM과 함께 사용할 수없는 일부 기능을 사용할 수 없다면 통과 할만한 의미가 없습니다. 최소한 HDMI 이상은 아닙니다.
derobert

예, 맞습니다. PulseAudio를 Stereo HDMI로 설정하여 실제로 오디오를 통과하고 있습니다. 이것이 수신기로 비트 스트림 오디오를 얻을 수있는 유일한 방법입니다. 또한 AAC에 대해 파헤 쳤으며 Yahama가 사양에 대해 언급하지 않았지만 온라인에서 고급 모델에서만 사용할 수 있다는 증거를 발견했습니다. HTPC를 사용하여 디코딩하여 많은 세부 정보를 잃어 버리고 있습니까? 7.1Ch / 192KHz, 24 비트로 설정했습니다. 감사!
dimuthu

@dimuthu PulseAudio에 합리적인 품질의 속도 변환기가 설정되어 있으면 PC에서 디코딩하여 아무것도 잃지 않아야합니다. CPU 시간을 제외하고는 아무것도 없습니다 (특히 샘플 속도에서 소스 자료를 훨씬 능가합니다)
derobert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.