ใน 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
ตอนนี้เพื่อทดสอบสิ่งนี้:
- รีสตาร์ท PulseAudio:
pulseaudio -k
ในฐานะผู้ใช้ปกติของคุณโดยสมมติว่าคุณใช้ต่อผู้ใช้ daemons (ค่าเริ่มต้น) เริ่มต้นใหม่อีกครั้งแม้แต่วิธีง่ายๆaplay -l
ก็ใช้งานได้
- เปลี่ยนเป็นโปรไฟล์ 7.1 ส่วนตัวผมเคย
pactl set-card-profile 0 "output:hdmi-surround-71"
ทำเช่นนี้ แต่ GUI จะทำงานได้ดีอย่างสมบูรณ์เช่นกัน
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
อาจจะไม่)