Tôi đang cố gắng để máy tính xách tay của mình chuyển âm thanh sang HDMI khi được cắm và trở lại tín hiệu tương tự tiêu chuẩn khi bị loại bỏ.
Tôi đã thiết lập quy tắc udev để kích hoạt tập lệnh để thực hiện chuyển đổi, tuy nhiên tôi đang gặp vấn đề khiến nó hoạt động:
- Dường như cho đến khi tôi chọn đầu ra Âm thanh HDMI trong Cài đặt âm thanh, nó sẽ không được nhận dạng là mức chìm có sẵn, cũng như khi đầu ra Âm thanh HDMI được chọn, đầu ra analog không còn được liệt kê.
Xem dưới đây:
# HDMI plugged in, not selected in Sound settings.
$ pactl list short sinks
5 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
kingamajick@kingamajick-laptop: ~
# HDMI selected in sound settings
$ pactl list short sinks
7 alsa_output.pci-0000_00_1b.0.hdmi-stereo module-alsa-card.c s16le 2ch 48000Hz SUSPENDED
kingamajick@kingamajick-laptop: ~
# HDMI removed
$ pactl list short sinks
9 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 48000Hz SUSPENDED
Kịch bản tôi đang sử dụng để chuyển đổi đầu ra như sau:
#!/bin/bash
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
if [ $HDMI_STATUS = "connected" ]
then
pactl set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.hdmi-stereo &> /dev/null; done
else
pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.analog-stereo &> /dev/null; done-server $PULSE_SERVER set-card-profile 0 output:analog-stereo+input:analog-stereo
fi
Kịch bản đưa ra lỗi về việc không có bồn rửa như vậy khi tôi kích hoạt nó trước khi tôi chọn HDMI trong cài đặt âm thanh.