मैं HDMI के ऊपर 7.1 सराउंड साउंड के लिए पल्सएडियो कैसे कॉन्फ़िगर करूं?


10

मेरे पास मेरी मशीन एचडीएमआई से एक रिसीवर से जुड़ी है। लेकिन जब मैं पल्सअडियो के साथ दो से अधिक चैनलों का उपयोग करने की कोशिश करता हूं, तो मुझे केवल दो मिलते हैं। pacmd list cardsकार्ड दिखाता है, लेकिन दो से अधिक चैनलों के साथ एक एचडीएमआई प्रोफ़ाइल नहीं दिखाता है।

मैंने पुष्टि की है कि 7.1 ध्वनि ALSA के माध्यम से काम करती है:

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

स्थिर का उत्पादन करता है जो कमरे के चारों ओर जाता है।

जवाबों:


20

PulseAudio में, प्रत्येक साउंड कार्ड में एक प्रोफ़ाइल सेट जुड़ा होता है। एक प्रोफाइल सेट में कई प्रोफाइल होते हैं, और वे प्रोफाइल होते हैं जिन्हें आप कार्ड को सूचीबद्ध करते समय देखते हैं (या विभिन्न पल्सएडियो GUIs में देखते समय)।

एक defaultप्रोफ़ाइल है, जिसमें मुख्य रूप से एनालॉग साउंड आउटपुट के लिए उपयोगी चीजें हैं। एक extra-hdmiप्रोफ़ाइल भी है जो स्वचालित रूप से कुछ एचडीएमआई आउटपुट पर लागू होती है, और 5.1 तक विकल्प देगी। ये दोनों प्रोफ़ाइल दुर्भाग्य से हैं /usr/share/pulseaudio/alsa-mixer/profile-sets, और इस प्रकार आप वास्तव में इन्हें संपादित नहीं कर सकते हैं (मैंने इसके बारे में डीबग बग 736708 दायर किया है ।) प्रलेखन के अनुसार, आप udev- आधारित ऑटोडिस्कवरी को अक्षम कर सकते हैं, और मैन्युअल रूप से सब कुछ कॉन्फ़िगर कर सकते हैं - जो आपको निर्दिष्ट करते हैं। एक प्रोफ़ाइल के लिए पूर्ण पथ। लेकिन यह पता चला है, कि जब यह प्रलेखित नहीं है, तो udv एक पूर्ण पथ भी निर्दिष्ट कर सकता है।

प्रोफ़ाइल सेट निर्दिष्ट करने के लिए एक 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

Udv नियम बनाने के बाद, आप इसे तुरंत लागू कर सकते हैं udevadm trigger -ssound। आप शायद अपने initramfs को फिर से बनाना चाहेंगे ( update-initramfs -u)

पुष्टि करें कि udv नियम प्रभावी हुआ udevadm info --query=all --path /sys/class/sound/card0(उपयुक्त कार्ड नंबर का उपयोग करें, निश्चित रूप से)। आपको E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.confआउटपुट में देखना चाहिए । यदि नहीं, तो जारी न रखें। यह काम नहीं करेगा। आपके udv नियमों में कुछ गड़बड़ है (या शायद आपने उन्हें ट्रिगर नहीं किया है - आप हमेशा रिबूट करने की कोशिश कर सकते हैं)।

/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"ऐसा करता था, लेकिन एक GUI पूरी तरह से अच्छी तरह से काम करेगा।
  3. भागो speaker-test -c 8 -t w। इसे स्पीकर नामों की घोषणा शुरू करनी चाहिए, उम्मीद है कि प्रत्येक स्पीकर में से सही नाम। यदि यह नाम सही वक्ता से नहीं आते हैं, तो आपको उन्हें सही करने के लिए चैनल-नक्शा बदलना होगा। प्रत्येक चैनल मानचित्र परिवर्तन के बाद, आपको फिर से PulseAudio को पुनरारंभ करना होगा।

बक्शीश! अधिक उपयोगी सेटिंग्स

इसमें /etc/pulse/daemon.conf, कुछ सेटिंग्स हैं जिन्हें आप बदलना चाहते हैं:

enable-remixing- यदि यह चालू है, तो एक स्टीरियो सिग्नल में आपका बायाँ चैनल आपके तीनों बाएँ स्पीकर से खेला जाएगा, और इसका दायाँ चैनल आपके दाएं बोलने वालों से बाहर होगा। यदि बंद है, तो यह केवल सामने के दो बाहर आएगा। ध्यान दें कि आप प्रोफ़ाइल को स्टीरियो में भी बदल सकते हैं (केवल एचडीएमआई पोर्ट से स्टीरियो साउंड भेजने के लिए, और अपने रिसीवर को यह तय करने दें कि इसे स्पीकर को कैसे मैप किया जाए)।

enable-lfe-remixing - समान, लेकिन LFE (सबवूफ़र) चैनल को रीमिक्स करने के लिए।

default-sample-format- यदि आपका एचडीएमआई सेटअप 16-बिट ऑडियो से अधिक का समर्थन करता है, तो आप इसे s32le(डिफ़ॉल्ट से s16le) बढ़ाना चाह सकते हैं ।

default-sample-rate, alternate-sample-rate- यदि आप ज्यादातर डीवीडी स्रोत सामग्री का उपयोग करते हैं, जो आमतौर पर 48KHz है, तो आप इन (और शायद 44.1KHz को पूरी तरह से अक्षम कर सकते हैं) स्वैप करना चाहते हैं। या, यदि आपका एचडीएमआई रिसीवर इसका समर्थन करता है, तो आप 192KHz तक सभी तरह से जा सकते हैं। ध्यान दें कि 176KHz के पास 44.1 और 48KHz दोनों की एक से अधिक होने की अच्छी संपत्ति है। यह देखने के लिए कि आपका रिसीवर क्या समर्थन करता है, यह निर्धारित करने के लिए नीचे देखें

default-sample-channels- वास्तव में बात नहीं लगती। प्रोफ़ाइल शायद इसे ओवरराइड करती है ...

स्वाभाविक रूप से, आपको इस फ़ाइल को बदलने के बाद PulseAudio को पुनरारंभ करना होगा।

फिर से बोनस! आपका रिसीवर क्या देख रहा है

ऐसी 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 (रैखिक PCM, यानी असम्पीडित ऑडियो) का समर्थन करता है। यह AC3, DTS, DSD, DD +, DTS-HD और Dolby TrueHD को भी सपोर्ट करता है। इसलिए यदि मेरे पास उन फ़ाइलों को इनकोड किया गया है, तो मैं उन प्रारूपों से गुजर सकता हूं (यदि मेरा मीडिया प्लेयर इसका समर्थन करता है, तो निश्चित रूप से। mpvशायद)।


इसके लिए एक लाख धन्यवाद, सेटअप के साथ कुछ समय के लिए संघर्ष कर रहा था। मेरे लिए udev नियम पहले लागू नहीं हुए थे, मुझे उसके लिए पीसी को पुनरारंभ करना पड़ा। हालांकि एक समस्या .. @derobert लगता है जैसे मैं X265, 7.1 ऑडियो स्ट्रीम को पॉश्चर नहीं कर सकता। मुझे बस पीसी का उपयोग करके इसे डिकोड करना है और ऑडियो स्ट्रीम को स्थानांतरित करना है। (मेरा रिसीवर एक 5.1 है) हालांकि क्या आपके पास कोई सुझाव है? धन्यवाद!
मंदुथू

@dimuthu H.265 (x265) एक वीडियो कोडेक है, ऑडियो कोडेक नहीं है। ध्यान दें कि पल्सएडियो के पास केवल पास के लिए सीमित समर्थन है, इसे सक्षम (GUI के साथ सबसे आसान) करने की आवश्यकता है, और इसे स्टीरियो पर सेट करने की आवश्यकता हो सकती है (काम के माध्यम से कैसे गुजरता है इसका एक कार्यान्वयन विवरण, चैनल गिनती पर एक वास्तविक सीमा नहीं है )। मुझे विवरण के साथ कोडी विकी पर एक पृष्ठ याद है।
derobert

1
@dimuthu (दूसरी टिप्पणी के लिए क्षमा करें, SE ऐप संपादित करने की कोशिश कर रहा है ...) मुझे लगता है कि 5.1 रिसीवर केवल AC3 और DTS का समर्थन करता है। उदाहरण के लिए, एएसी। जब तक यह आपको मल्टीचैनल पीसीएम के साथ उपयोग नहीं होने वाले रिसीवर पर कुछ सुविधाओं का उपयोग करने की अनुमति देता है, तब तक गुजरने के लिए अधिक बिंदु नहीं है। कम से कम एचडीएमआई पर नहीं।
derobert

हाँ, आप सही हैं, मैं पल्सअडियो को स्टीरियो एचडीएमआई पर सेट करके ऑडियो से गुजर रहा हूं। यह एकमात्र तरीका है जिससे मुझे रिसीवर को बिटस्ट्रीम ऑडियो मिल सकता है। यह भी AAC के बारे में के माध्यम से एक खुदाई किया और भले ही Yahama ने अपने चश्मे पर कुछ भी उल्लेख नहीं किया है, मुझे यह पता लगाने के लिए ऑनलाइन कुछ सबूत मिले कि यह केवल उच्च अंत मॉडल में उपलब्ध है। क्या मैं HTPC का उपयोग कर इसे डिकोड करके बहुत सारे विवरण खो रहा हूं? मैंने इसे 7.1Ch / 192KHz, 24-बिट तक सेट किया है। धन्यवाद!
मंदुथू

@dimuthu आपको पीसी पर डिकोड करके कुछ भी नहीं खोना चाहिए, जब तक कि आपके पास पुलायडियो में उचित गुणवत्ता दर कनवर्टर सेट न हो। खैर, कुछ CPU समय (विशेष रूप से है कि नमूना दर है, जो कोई संदेह नहीं है अब तक स्रोत सामग्री से अधिक है पर) को छोड़कर कुछ भी नहीं
derobert
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.