PulseAudio'yu HDMI üzerinden 7.1 Surround Ses için nasıl yapılandırabilirim?


10

Makinemi HDMI üzerinden bir alıcıya bağladım. Ancak PulseAudio ile ikiden fazla kanal kullanmaya çalıştığımda, yalnızca iki kanal alıyorum. pacmd list cardskartı gösterir, ancak ikiden fazla kanalı olan bir HDMI profili göstermez.

7.1 sesin ALSA üzerinden çalıştığını doğruladım:

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

Odanın etrafında dönen statik üretir.

Yanıtlar:


20

PulseAudio'da her ses kartının kendisiyle ilişkilendirilmiş bir profil seti vardır. Bir profil seti birden çok profil içerir ve bunlar kartları listelerken (veya çeşitli PulseAudio GUI'lerine bakarken gördüğünüz profillerdir).

defaultÖncelikle analog ses çıkışı için yararlı şeyler içeren bir profil vardır . extra-hdmiBazı HDMI çıkışlarına otomatik olarak uygulanan bir profil de vardır ve 5.1'e kadar seçenek sunar. Bu profillerin ikisi de maalesef var /usr/share/pulseaudio/alsa-mixer/profile-setsve bu yüzden onları gerçekten düzenleyemezsiniz ( Bu konuda hata ayıklama hatası 736708 dosyaladım .) Belgelere göre, udev tabanlı otomatik keşfi devre dışı bırakabilir ve her şeyi manuel olarak yapılandırabilirsiniz; bir profilin tam yolu. Ancak, belgelenmediği halde, udev'in de tam bir yol belirleyebileceği ortaya çıkıyor.

Profil kümesi atamak için bir udev kuralı ayarlama

PULSE_PROFILE_SETUdev ortam değişkenini ayarlayarak udev kuralında ayarlanmış bir profil atarsınız . Sadece yukarıda belirtilen /usralt dizinde bir dosya almak için belgelenmiştir , ancak tam bir yol da çalışır. Benim durumumda, bu kuralı oluşturdum:

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

Kolayca alabileceğiniz uygun PCI satıcısını ve aygıt numaralarını kullanmanız gerekecektir lspci -nn.

Udev kuralını oluşturduktan sonra hemen ile uygulayabilirsiniz udevadm trigger -ssound. Muhtemelen initramf'lerinizi de yeniden oluşturmak isteyeceksiniz ( update-initramfs -u)

Udev kuralının geçerli olduğunu doğrulayın udevadm info --query=all --path /sys/class/sound/card0(elbette uygun kart numarasını kullanın). E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.confÇıktıda görmelisiniz . Değilse, devam etmeyin. Çalışmaz. Udev kurallarınızla ilgili bir sorun var (ya da belki onları tetiklemediniz - her zaman yeniden başlatmayı deneyebilirsiniz).

/Etc/pulse/my-hdmi.conf dosyasını oluşturun

Not: Kanal haritası görünüşte sisteme özeldir. Sisteminize uygun hale getirmek için denemeniz gerekir. Şanslıydım, 7.1 düzenim sadece 5.1, 4.0, vb. İnşa etmek için son eşyaları düşürmeyi içeriyor. Talimatlar aşağıdadır.

Bu çoğunlukla kopyala ve yapıştır. Her bölüm (a) ad, (b) açıklama, (c) kanal haritası, (d) [isteğe bağlı] önceliğe göre farklılık gösterir.

[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

Şimdi, bunu test etmek için:

  1. PulseAudio'yu yeniden başlatın: pulseaudio -knormal kullanıcı olarak kullanıcı başına arka plan programı (varsayılan) kullandığınızı varsayarsak. Tekrar başlatın, basit bir aplay -liş bile işe yarayacaktır.
  2. 7.1 profiline geçin. Şahsen pactl set-card-profile 0 "output:hdmi-surround-71"bunu yapardım, ama bir GUI de mükemmel bir şekilde çalışacaktır.
  3. Koş speaker-test -c 8 -t w. Konuşmacı isimlerini duyurmaya başlamalıdır, umarım her konuşmacının doğru adı. İsimler doğru konuşmacıdan gelmiyorsa, doğru yapmak için kanal haritasını değiştirmeniz gerekir. Her kanal haritası değişikliğinden sonra PulseAudio'yu yeniden başlatmanız gerekir.

Bonus! Daha kullanışlı ayarlar

İçinde /etc/pulse/daemon.conf, değiştirmek isteyebileceğiniz birkaç ayar vardır:

enable-remixing- Bu açıksa, bir stereo sinyal sol kanalının üç sol hoparlöründen ve sağ kanalının sağ hoparlörlerinizden çalınmasını sağlar. Eğer kapalıysa, sadece ön iki dışarı çıkar. Ayrıca profili stereo olarak da değiştirebileceğinizi unutmayın (yalnızca HDMI bağlantı noktasından stereo ses göndermek ve alıcınızın hoparlörlerle nasıl eşleştirileceğine karar vermek için).

enable-lfe-remixing - Benzer, ancak LFE (subwoofer) kanalına yeniden karıştırmak için.

default-sample-format- HDMI kurulumunuz 16 bit sesden daha fazlasını destekliyorsa, bunu s32le(varsayılandan s16le) yükseltmek isteyebilirsiniz .

default-sample-rate, alternate-sample-rate- Çoğunlukla genellikle 48KHz olan DVD-kaynak malzeme kullanıyorsanız bunları değiştirebilirsiniz (ve hatta 44.1KHz'i tamamen devre dışı bırakabilirsiniz). Veya, HDMI alıcınız destekliyorsa, 192KHz'e kadar gidebilirsiniz. 176KHz'in hem 44.1 hem de 48KHz'in katları olma özelliği var. Alıcınızın neleri desteklediğini nasıl belirleyeceğiniz için aşağıya bakın

default-sample-channels- Gerçekten önemli değil. Profil büyük olasılıkla geçersiz kılar ...

Doğal olarak, bu dosyayı değiştirdikten sonra PulseAudio'yu yeniden başlatmanız gerekir.

Tekrar Bonus! Alıcınızın Neleri Desteklediğini Görme

HDMI bağlantısının diğer ucunun desteklediğini iddia ettiği eld.*dosyalar vardır /proc/asound. Örneğin:

# 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

Böylece alıcımın 8 kanala, 192KHz, 24-bit sese kadar LPCM'yi (Doğrusal PCM, yani sıkıştırılmamış ses) desteklediğini görebilirsiniz. Ayrıca AC3, DTS, DSD, DD +, DTS-HD ve Dolby TrueHD'yi de destekler. Eğer bunlarda kodlanmış dosyalar varsa, bu formatları geçebilirim (medya yürütücüm destekliyorsa, elbette. mpvMuhtemelen).


Bunun için bir milyon teşekkürler, kurulumla bir süredir mücadele ediyor. Benim için udev kuralları ilk olarak geçerli değildi, bunun için PC'yi yeniden başlatmam gerekiyordu. Bir sorun olsa .. @derobert Görünüşe göre X265, 7.1 ses akışı geçemez. Sadece PC kullanarak kodunu çözüp ses akışını aktarmam gerekiyor. (Alıcım 5.1 olsa da) Öneriniz var mı? Teşekkürler!
dimuthu

@dimuthu H.265 (x265) bir ses codec bileşeni değil, bir video codec bileşenidir. PulseAudio'nun yalnızca geçiş için sınırlı desteği olduğunu, etkinleştirilmesi (GUI ile en kolay) olduğunu ve stereo olarak ayarlanması gerekebileceğini (yalnızca kanal geçişinde nasıl çalıştığının bir uygulama detayı olduğunu, kanal sayısında gerçek bir sınır olmadığını unutmayın) ). Kodi wiki'deki ayrıntıları içeren bir sayfayı hatırlıyorum.
derobert

1
@dimuthu (2 yorum için üzgünüm, SE uygulaması düzenlemeye çalışırken çöküyor ...) 5.1 alıcı sadece AC3 ve DTS destekler sanırım. Örneğin, AAC değil. Alıcıda, çok kanallı PCM ile kullanamayacağınız bazı özellikleri kullanmanıza izin vermedikçe, geçmek için çok fazla bir nokta yoktur. En azından HDMI üzerinden değil.
derobert

evet haklısın, PulseAudio'yu Stereo HDMI olarak ayarlayarak sesin içinden geçiyorum. Alıcıya bit akışı sesi alabilmemin tek yolu bu. Ayrıca AAC hakkında bir araştırma yaptı ve Yahama özelliklerinde hiçbir şeyden bahsetmemiş olsa da, sadece üst düzey modellerde mevcut olduğunu anlamak için çevrimiçi bazı kanıtlar buldum. HTPC kullanarak kod çözerek çok fazla ayrıntı kaybediyor muyum? 7,1Ch / 192KHz, 24-bit olarak ayarladım. Teşekkürler!
dimuthu

@dimuthu PulseAudio'da ayarlanmış makul bir kalite oranı dönüştürücünüz olduğu sürece PC'de kod çözerek hiçbir şey kaybetmemeniz gerekir. Eh, bazı CPU zamanları dışında hiçbir şey (özellikle şüphesiz kaynak malzemeyi aşan bu örnek hızda)
derobert
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.