Trong PulseAudio, mỗi card âm thanh có một bộ hồ sơ được liên kết với nó. Một bộ hồ sơ chứa nhiều hồ sơ và đó là những hồ sơ bạn thấy khi liệt kê các thẻ (hoặc khi tìm trong GUI PulseAudio khác nhau).
Có một default
hồ sơ, trong đó chủ yếu chứa những thứ hữu ích cho đầu ra âm thanh tương tự. Ngoài ra còn có một extra-hdmi
cấu hình được tự động áp dụng cho một số đầu ra HDMI và sẽ cung cấp các tùy chọn tối đa 5.1. Cả hai cấu hình này đều không may /usr/share/pulseaudio/alsa-mixer/profile-sets
, và do đó bạn không thể chỉnh sửa chúng (Tôi đã gửi lỗi Debug 736708 về điều này.) Theo tài liệu, bạn có thể vô hiệu hóa tính năng tự động phát hiện dựa trên udev và định cấu hình thủ công mọi thứ mà bạn chỉ định đường dẫn đầy đủ đến một hồ sơ. Nhưng hóa ra, trong khi nó không được ghi lại, udev cũng có thể chỉ định một đường dẫn đầy đủ.
Thiết lập quy tắc udev để gán bộ hồ sơ
Bạn chỉ định một bộ hồ sơ theo quy tắc udev bằng cách đặt PULSE_PROFILE_SET
biến môi trường udev. Tài liệu của nó chỉ lấy một tệp trong /usr
thư mục con nói trên , nhưng một đường dẫn đầy đủ cũng hoạt động. Trong trường hợp của tôi, tôi đã tạo quy tắc này:
# cat /etc/udev/rules.d/95-local-pulseaudio.rules
ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1c20", ENV{PULSE_PROFILE_SET}="/etc/pulse/my-hdmi.conf"
Bạn sẽ cần sử dụng số nhà cung cấp và thiết bị PCI thích hợp mà bạn có thể dễ dàng lấy được lspci -nn
.
Sau khi tạo quy tắc udev, bạn có thể áp dụng nó ngay lập tức udevadm trigger -ssound
. Bạn có thể sẽ muốn xây dựng lại initramfs của mình ( update-initramfs -u
)
Tất nhiên, xác nhận rằng quy tắc udev có hiệu lực udevadm info --query=all --path /sys/class/sound/card0
(dĩ nhiên sử dụng số thẻ thích hợp). Bạn sẽ thấy E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.conf
trong đầu ra. Nếu không, đừng tiếp tục. Nó sẽ không hoạt động. Có gì đó không đúng với quy tắc udev của bạn (hoặc có thể bạn không kích hoạt chúng. Bạn luôn có thể thử khởi động lại).
Tạo tệp /etc/pulse/my-hdmi.conf
Lưu ý: Bản đồ kênh rõ ràng là hệ thống cụ thể. Bạn sẽ cần thử nghiệm để làm cho nó phù hợp với hệ thống của bạn. Tôi đã may mắn, bố cục 7.1 của tôi chỉ liên quan đến việc bỏ các mục cuối cùng để xây dựng 5.1, 4.0, v.v ... Hướng dẫn bên dưới.
Đây là rất nhiều bản sao và dán, chủ yếu. Mỗi phần khác nhau trong (a) tên, (b) mô tả, (c) bản đồ kênh, (d) [tùy chọn] ưu tiên.
[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
Bây giờ, để kiểm tra điều này:
- Khởi động lại PulseAudio :
pulseaudio -k
, như người dùng bình thường của bạn, giả sử bạn đang sử dụng trình tiện ích cho mỗi người dùng (mặc định). Bắt đầu lại, thậm chí một đơn giản aplay -l
sẽ làm việc.
- Chuyển sang cấu hình 7.1. Cá nhân tôi đã từng
pactl set-card-profile 0 "output:hdmi-surround-71"
làm điều này, nhưng GUI cũng sẽ hoạt động hoàn hảo.
- Chạy đi
speaker-test -c 8 -t w
. Nó sẽ bắt đầu thông báo tên người nói, hy vọng tên chính xác của mỗi người nói. Nếu tên không đến từ người nói chính xác, bạn sẽ phải thay đổi bản đồ kênh để có tên đúng. Sau mỗi lần thay đổi bản đồ kênh, bạn phải khởi động lại PulseAudio.
Tặng kem! Cài đặt hữu ích hơn
Trong /etc/pulse/daemon.conf
, có một vài cài đặt bạn có thể muốn thay đổi:
enable-remixing
- Nếu điều này được bật, tín hiệu âm thanh nổi sẽ phát kênh trái của cả ba loa trái của bạn và kênh phải của nó ra khỏi loa phải của bạn. Nếu tắt, nó sẽ chỉ ra hai mặt trước. Lưu ý rằng bạn cũng có thể thay đổi cấu hình thành âm thanh nổi (để chỉ gửi âm thanh nổi ra cổng HDMI và để người nhận của bạn quyết định cách ánh xạ nó tới loa).
enable-lfe-remixing
- Tương tự, nhưng để phối lại với kênh LFE (loa siêu trầm).
default-sample-format
- Nếu thiết lập HDMI của bạn hỗ trợ âm thanh lớn hơn 16 bit, bạn có thể muốn tăng mức này lên s32le
(từ mặc định s16le
).
default-sample-rate
, alternate-sample-rate
- Bạn có thể muốn trao đổi những thứ này (và thậm chí có thể vô hiệu hóa hoàn toàn 44.1KHz) nếu bạn chủ yếu sử dụng vật liệu nguồn DVD thường là 48KHz. Hoặc, nếu bộ thu HDMI của bạn hỗ trợ nó, bạn có thể đạt tới 192KHz. Lưu ý rằng 176KHz có đặc tính tốt là bội số của cả 44.1 và 48KHz. Xem bên dưới để biết cách xác định những gì người nhận của bạn hỗ trợ
default-sample-channels
- Có vẻ không quan trọng lắm. Hồ sơ có thể ghi đè lên nó ...
Đương nhiên, bạn sẽ phải khởi động lại PulseAudio sau khi thay đổi tệp này.
Thưởng lần nữa! Xem những gì người nhận của bạn hỗ trợ
Có eld.*
các tệp trong /proc/asound
đó cho bạn biết đầu kia của liên kết HDMI yêu cầu hỗ trợ gì. Ví dụ:
# 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
Vì vậy, bạn có thể thấy máy thu của tôi hỗ trợ LPCM (PCM tuyến tính, nghĩa là âm thanh không nén) ở tối đa 8 kênh, 192KHz, âm thanh 24 bit. Nó cũng hỗ trợ AC3, DTS, DSD, DD +, DTS-HD và Dolby TrueHD. Vì vậy, nếu tôi có các tệp được mã hóa trong các tệp đó, tôi có thể chuyển qua các định dạng đó (tất nhiên nếu trình phát đa phương tiện của tôi hỗ trợ nó, tất nhiên mpv
là có thể).