Як налаштувати PulseAudio на 7.1 об'ємний звук через HDMI?


10

У мене машина підключена через HDMI до приймача. Але коли я намагаюся використовувати більше ніж два канали з PulseAudio, я отримую лише два. pacmd list cardsпоказує картку, але не показує профіль HDMI з більш ніж двома каналами.

Я підтвердив, що 7,1 звуку працює через ALSA:

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

Випускає статику, яка ходить по кімнаті.

Відповіді:


20

У PulseAudio кожна звукова карта має набір профілів, пов’язаних із нею. Набір профілів містить кілька профілів, і це профілі, які ви бачите при переліку карт (або при перегляді різних графічних інтерфейсів PulseAudio).

Є defaultпрофіль, який в першу чергу містить речі, корисні для аналогового виходу звуку. Існує також extra-hdmiпрофіль, який автоматично застосовується до деяких виходів HDMI і надасть варіанти до 5.1. На жаль /usr/share/pulseaudio/alsa-mixer/profile-sets, обидва ці профілі, на жаль , не вдається, і ви не можете їх редагувати (я подав помилку про налагодження 736708 про це.) Відповідно до документації, ви можете вимкнути автовідкриття на основі udev і налаштувати все вручну - щоб ми вказали повний шлях до профілю. Але виявляється, що, хоча це не задокументовано, udev може також вказати повний шлях.

Встановіть правило udev для призначення набору профілів

Ви призначаєте набір профілів у правилі udev, встановлюючи PULSE_PROFILE_SETзмінну середовища 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 та ін. Інструкції наведені нижче.

Здебільшого це копіювання та вставлення. Кожен розділ відрізняється (а) назвою, (б) описом, (в) картою каналу, (г) [необов'язково] пріоритетом.

[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: pulseaudio -kяк ваш звичайний користувач, припускаючи, що ви використовуєте демони користувача (за замовчуванням). Почніть його знову, навіть простий aplay -lбуде працювати.
  2. Переключіться на профіль 7.1. Особисто я раніше pactl set-card-profile 0 "output:hdmi-surround-71"це робив, але графічний інтерфейс також буде працювати чудово.
  3. Біжи speaker-test -c 8 -t w. Слід почати оголошувати імена ораторів, сподіваємось, правильне ім’я кожного виступу. Якщо імена не походять від правильного динаміка, вам доведеться змінити карту каналів, щоб їх правильно виправити. Після кожної зміни карти каналу потрібно знову перезапустити PulseAudio.

Бонус! Більше корисних налаштувань

В /etc/pulse/daemon.conf, є кілька налаштувань ви можете змінити:

enable-remixing- Якщо це ввімкнено, стереосигнал відіграє лівий канал з усіх трьох ваших лівих колонок, а правий канал - з правого динаміка. Якщо вимкнено, вийдуть лише передні два. Зауважте, що ви також можете змінити профіль на стерео (щоб тільки посилати стереозвук із порту HDMI, і дозволити вашому приймачу вирішувати, як його нанести на колонки).

enable-lfe-remixing - Аналогічно, але для реміксу на канал LFE (сабвуфер).

default-sample-format- Якщо ваша настройка HDMI підтримує більше 16-бітового звуку, можливо, ви захочете збільшити це до s32le(із замовчуванням s16le).

default-sample-rate, alternate-sample-rate- Можливо, ви захочете поміняти їх (і, можливо, навіть повністю відключити 44,1 КГц), якщо ви здебільшого використовуєте матеріал з DVD-джерелом, який зазвичай становить 48 КГц. Або якщо ваш приймач HDMI підтримує його, ви можете пройти весь шлях до 192 КГц. Зауважте, що 176 кГц має приємну властивість бути навіть кратним як 44,1, так і 48 кГц. Нижче див., Як визначити, що підтримує ваш приймач

default-sample-channels- Це насправді не має значення. Профіль, ймовірно, перекриває його ...

Звичайно, вам доведеться перезапустити PulseAudio після зміни цього файлу.

Знову бонус! Перегляньте, що підтримує ваш приймач

Є eld.*файли, в /proc/asoundяких ви повідомляєте, що інший кінець посилання HDMI вимагає підтримувати. Наприклад:

# 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

Таким чином, ви можете бачити, що мій приймач підтримує LPCM (лінійний PCM, тобто нестиснений аудіо) на 8 каналах, 192 КГц, 24-бітний звук. Він також підтримує AC3, DTS, DSD, DD +, DTS-HD та Dolby TrueHD. Отже, якщо у мене закодовані файли, я можу пропустити ці формати (якщо, звичайно, мій медіаплеєр підтримує це, mpvмабуть, так і є).


Дякую мільйон за це, якийсь час бореться з налаштуванням. Для мене правила udev не застосовувалися спочатку, мені довелося перезапустити ПК для цього. Однак одна проблема .. @derobert Схоже, я не можу пройти аудіопотік X265, 7.1. Мені просто потрібно розшифрувати його за допомогою ПК та передати аудіопотік. (У мого приймача 5.1, хоча) Чи є у вас якісь пропозиції? Дякую!
димутху

@dimuthu H.265 (x265) - це відео кодек, а не аудіокодек. Зауважте, що PulseAudio має лише обмежену підтримку для проходження через неї, її потрібно ввімкнути (найпростіше з графічним інтерфейсом), і, можливо, її потрібно буде встановити на стереосистему (лише детальна інформація про те, як проходить робота, а не реальна межа обмеження кількості каналів ). Здається, я згадую сторінку на вікі Kodi з деталями.
дероберт

1
@dimuthu (Вибачте за другий коментар, додаток SE виходить з ладу, намагаючись редагувати ...) Я думаю, що 5.1-приймач підтримує лише AC3 та DTS. Не, наприклад, AAC. Якщо це не дозволяє використовувати деякі функції на ресивері, якими ви не можете користуватися з багатоканальним ПКМ, не дуже багато сенсу пройти. Принаймні не над HDMI.
дероберт

так, ти маєш рацію, я переживаю звук, встановлюючи PulseAudio на Stereo HDMI. Це єдиний спосіб, коли я міг би отримати потік аудіо до приймача. Крім того, я розібрався про AAC, і хоча Yahama нічого не згадував у своїх специфікаціях, я знайшов в Інтернеті деякі докази, щоб зрозуміти, що це доступно лише у більш високих моделях. Чи втрачаю я стільки деталей, розшифровуючи її за допомогою HTPC? Я встановив його на 7.1Ch / 192KHz, 24-бітний. Дякую!
димутху

@dimuthu ви насправді нічого не втрачаєте, розшифрувавши на ПК, якщо у PulseAudio встановлений розумний конвертер швидкості якості. Ну, нічого, крім деякого часу процесора (особливо при тій частоті вибірки, яка, без сумніву, набагато перевищує вихідний матеріал)
derobert
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.