ฉันจะกำหนดค่า PulseAudio สำหรับ 7.1 Surround Sound ผ่าน 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 GUIs ต่าง ๆ )

มีรูปแบบdefaultซึ่งส่วนใหญ่จะมีสิ่งที่มีประโยชน์สำหรับการส่งสัญญาณเสียงอะนาล็อก นอกจากนี้ยังมีextra-hdmiโปรไฟล์ที่ใช้กับเอาต์พุต HDMI บางตัวโดยอัตโนมัติและจะให้ตัวเลือกมากถึง 5.1 ทั้งสองโพรไฟล์เหล่านี้โชคไม่ดีที่/usr/share/pulseaudio/alsa-mixer/profile-setsทำให้คุณไม่สามารถแก้ไขได้จริงๆ (ฉันยื่นDebug bug 736708เกี่ยวกับเรื่องนี้) ตามเอกสารคุณสามารถปิดการใช้งาน autodiscovery ที่ใช้ 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 และอื่น ๆ คำแนะนำอยู่ด้านล่าง

นี่เป็นจำนวนมากคัดลอกและวางส่วนใหญ่ แต่ละส่วนมีความแตกต่างใน (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: pulseaudio -kในฐานะผู้ใช้ปกติของคุณโดยสมมติว่าคุณใช้ต่อผู้ใช้ daemons (ค่าเริ่มต้น) เริ่มต้นใหม่อีกครั้งแม้แต่วิธีง่ายๆ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- หากเปิดใช้งานสัญญาณสเตอริโอจะมีช่องทางซ้ายเล่นจากลำโพงด้านซ้ายทั้งสามของคุณและช่องสัญญาณด้านขวาออกจากลำโพงขวาของคุณ ถ้าปิดมันจะออกมาด้านหน้าเท่านั้น โปรดทราบว่าคุณยังสามารถเปลี่ยนโปรไฟล์เป็นสเตอริโอ (เพื่อส่งเสียงสเตอริโอออกพอร์ต HDMI เท่านั้นและให้ผู้รับของคุณตัดสินใจว่าจะจับคู่กับลำโพง)

enable-lfe-remixing - คล้ายกัน แต่สำหรับนำมาผสมใหม่กับช่อง LFE (ซับวูฟเฟอร์)

default-sample-format- หากการตั้งค่า HDMI ของคุณรองรับเสียงมากกว่า 16 บิตคุณอาจต้องการเพิ่มสิ่งนี้เป็นs32le(จากค่าเริ่มต้นs16le)

default-sample-rate, alternate-sample-rate- คุณอาจต้องการที่จะสลับเหล่านี้ (และอาจจะปิดการใช้งาน 44.1KHz ทั้งหมด) ถ้าคุณใช้ส่วนใหญ่เป็นวัสดุ DVD-แหล่งที่มาซึ่งโดยปกติจะ 48KHz หรือหากตัวรับสัญญาณ HDMI ของคุณรองรับคุณสามารถไปได้ไกลถึง 192KHz โปรดทราบว่า 176KHz มีคุณสมบัติที่ดีในการเป็นทวีคูณของทั้ง 44.1 และ 48KHz ดูวิธีกำหนดว่าผู้รับของคุณรองรับด้านล่างได้อย่างไร

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 (Linear PCM เช่นเสียงที่ไม่บีบอัด) ที่มากถึง 8 ช่องสัญญาณ 192KHz และเสียง 24 บิต นอกจากนี้ยังรองรับ AC3, DTS, DSD, DD +, DTS-HD และ Dolby TrueHD ดังนั้นถ้าฉันมีไฟล์ที่เข้ารหัสในที่ผมสามารถผ่านรูปแบบดังกล่าว (ถ้ามีเครื่องเล่นสื่อของฉันสนับสนุนมันแน่นอน. mpvอาจจะไม่)


ขอบคุณสำหรับสิ่งนี้ได้รับการดิ้นรนในขณะที่การตั้งค่า สำหรับฉันแล้วกฎของ udev ไม่ได้ใช้ก่อนฉันต้องรีสตาร์ทพีซีสำหรับสิ่งนั้น ปัญหาหนึ่งแม้ว่า .. @derobert ดูเหมือนว่าฉันไม่สามารถส่งผ่าน X265 สตรีมเสียง 7.1 ได้ ฉันต้องถอดรหัสโดยใช้ PC และถ่ายโอนไฟล์เสียง (แม้ว่าตัวรับสัญญาณของฉันคือ 5.1) คุณมีข้อเสนอแนะหรือไม่? ขอบคุณ!
dimuthu

@dimuthu H.265 (x265) เป็นตัวแปลงสัญญาณวิดีโอไม่ใช่ตัวแปลงสัญญาณเสียง โปรดทราบว่า PulseAudio สนับสนุนการส่งผ่านได้อย่าง จำกัด เท่านั้นจำเป็นต้องเปิดใช้งาน (GUI ที่ง่ายที่สุด) และอาจต้องตั้งค่าเป็นระบบสเตอริโอ (เพียงรายละเอียดการใช้งานของวิธีการส่งผ่านงานไม่ใช่ขีด จำกัด ที่แท้จริงของจำนวนช่องสัญญาณ ) ฉันดูเหมือนจะจำหน้าเว็บบน Kodi wiki พร้อมรายละเอียด
Derobert

1
@dimuthu (ขออภัยสำหรับความคิดเห็นที่ 2 ว่าแอป SE กำลังพยายามแก้ไข ... ) ฉันเดาว่าตัวรับสัญญาณ 5.1 รองรับเฉพาะ AC3 และ DTS ไม่เช่น AAC นอกจากจะช่วยให้คุณใช้คุณสมบัติบางอย่างบนเครื่องรับที่คุณไม่สามารถใช้กับ PCM หลายช่องสัญญาณได้ไม่มากนัก อย่างน้อยไม่เกิน HDMI
Derobert

ใช่คุณพูดถูกฉันกำลังผ่านเสียงโดยการตั้งค่า PulseAudio เป็นสเตอริโอ HDMI นี่เป็นวิธีเดียวที่ฉันจะได้รับเสียงบิตสตรีมไปยังผู้รับ นอกจากนี้ยังได้ขุดเกี่ยวกับ AAC และแม้ว่า Yahama ไม่ได้พูดถึงอะไรในสเป็คของพวกเขาฉันพบหลักฐานบางอย่างทางออนไลน์เพื่อคิดว่ามันมีเฉพาะในรุ่นที่สูงกว่า ฉันกำลังสูญเสียรายละเอียดมากด้วยการถอดรหัสโดยใช้ HTPC หรือไม่ ฉันตั้งไว้ที่ 7.1Ch / 192KHz, 24-bit ขอบคุณ!
dimuthu

@dimuthu คุณไม่ควรสูญเสียสิ่งใดโดยการถอดรหัสบนพีซีตราบใดที่คุณมีตัวแปลงอัตราคุณภาพที่เหมาะสมใน PulseAudio ดีไม่มีอะไรยกเว้นบางเวลา CPU (โดยเฉพาะอย่างยิ่งในอัตราตัวอย่างที่ซึ่งไม่มีข้อสงสัยไกลเกินกว่าวัสดุแหล่งที่มา)
derobert
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.