注意:出现此问题的原因是 Pulsaudio 忽略了用户在设置声音菜单中设置的设置。
如何强制 pulsaudio 默认使用正确的音频设备?
系统:
- Ubuntu 21.10;NVidia gtx1050ti。
配置:
- 4k 显示器插入 DP 端口;
- hdmi2av 适配器插入 hdmi 端口;
- 模拟立体声插入 hdmi2av 转换器。
期望的结果:
- 显示器上的 4k 视频;
- 立体声高清音效。
实际结果:
- 有4k视频;
- 启动并恢复后, HDMI 端口没有声音。
无声音的原因:系统未默认使用正确的设备。在启动和恢复时,默认为内置扬声器。
所采取的行动:
操作,第 1 部分:使用“设置”手动设置正确的设备。
操作第 1 部分结果:声音正常。但在恢复或重新启动后,声音恢复为内部声音。
行动,第 2 部分:
- 重启
- 将此行添加到 /etc/pulse/default.pa... :
set-default-sink alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1
- 命令:
pulseaudio --kill
- 命令:
pulseaudion --start
操作第 2 部分结果:设置现在显示正确的声音设备,以及来自 HDMI 端口的音频。
问题:
每次重新启动和恢复时,都必须输入命令pulseaudio --kill/--start
。
问题:
如何强制 pulseaudio 默认使用正确的音频卡、设备、端口,而不需要总是:a/ 输入命令kill/start
;或 b/ 重新启动或重启?
答案1
经过一年的阅读,我读了所有能找到的资料,并进行了多次反复尝试,我可能终于找到了答案。这个过程极其复杂、隐蔽且令人沮丧。以下是我发现的过程、命令、结果和解决方案...
查找 HDMI 输出
$ aplay -l
返回...
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0
测试正确的卡
$ aplay -D plughw:1,7 /usr/share/sounds/alsa/Noise.wav
...如果听到噪音,则卡+设备正确
(在找到正确的卡+设备之前不要继续)
查找计算机中的 pulseaudio 接收器
$ pactl list sinks
返回...
3 alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1 module-alsa-card.c s16le 2ch 44100Hz
手动配置 PulseAudio 以检测 Nvidia HDMI
sudo gedit /etc/pulse/default.pa
在 default.pa 的底部输入以下几行...
load-module module-alsa-sink device=hw:1,7 set-sink-port alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1
保存并关闭 gedit
重新启动 PulseAudio:
$ pulseaudio --kill
$ pulseaudio --start
打开设置,并检查声音设置
是否列出了正确的音频设备?
- 关闭机器电源,然后打开重新启动
打开设置,并检查声音设置
是否选择了正确的音频设备作为默认设备?如果是,完成!
答案2
解决了!
我最诚挚地感谢 Pulseaudio 的 Igor Kovalenko 最终解决了这个问题。
步骤1:验证正确的卡(如上)。
就我而言,相关地址是:
alsa_card.pci-0000_01_00.1
第 2 步:设置粘性
调用终端并输入:
$ pactl 发送消息 /card/alsa_card.pci-0000_01_00.1 获取配置文件粘性
这应该返回值:false。
通过此命令将 false 更改为 true:
$ pactl 发送消息 /card/alsa_card.pci-0000_01_00.1 设置配置文件粘性 true
重新启动计算机:关闭/打开电源。
笔记:
如果 Ubuntu 的人们将 pavucontrol 5.0 的更新版本添加到存储库中,那么上述所有内容都不是必需的
Pavucontrol 5.0 具有 GUI 来选择和锁定 HDMI 卡 + 端口。之前的版本(例如存储库中的 4.2)没有此功能。