Luc*_*cas 17 sound pulseaudio hdmi alsa 20.04
我刚刚在我的笔记本电脑上安装了 Ubuntu 20.04,它有点过时了:
总体而言,系统运行良好,但我在 HDMI 音频方面遇到了大问题。HDMI 上的显示效果很好,但音频根本不起作用。
我在 Ask Ubuntu 上尝试了很多解决方案,但问题仍然存在。我尝试过的一些解决方案位于以下链接中:
Ubuntu 18.04:除非我在输出之间切换,否则音频不起作用
另外我再次下载了 Ubuntu 20.04 iso 并重新安装了系统,但它不起作用。
当我在用 Ubuntu 替换它之前使用 Windows 10 时,HDMI 工作得很好。
当我运行时,aplay -l
我有这些结果:
当我运行时,lspci
我有这些结果:
在设置->声音->输出->输出设备中,我只有两个选项可供选择:
在 Pulseaudio > Configuration 上显示:GF108 High Definition Audio Controller and Built-in Audio
并且在这两个选项中,所有带有 HDMI 的选项都显示为 (unplugged)(unavailable)。
最后,声音只适用于我的笔记本电脑,如果我连接 HDMI 电缆,它可以正确显示,但声音会保留在我的笔记本电脑上。
小智 10
从 Ubuntu 18.04 升级到 20.04 后,我注意到在我登录后打开电视时,pulseaudio 将不再检测到 HDMI 音频输出(插入到 nVidia 显卡)。HDMI 输出不再在声音设置中列出。这曾经在 18.04 中起作用。
我发现一种解决方法是打开控制台并在打开电视后键入以下命令:
pulseaudio -k
Run Code Online (Sandbox Code Playgroud)
Niv*_*ven 10
这是一个老问题,所以也许您已经解决了您的问题。但如果您还没有,或者其他人遇到这个问题并且没有找到适合他们的解决方案(就像我最近的情况一样),这是人们可以尝试的另一件事。
这主要取自此处的建议,但略有扩展/修改。PulseAudio 似乎有一个错误,可能会导致它无法自动检测 hdmi 音频输出(在其语言中为“接收器”),因此您可以通过手动告诉它有关您的 hdmi 设备的信息来修复问题。
您可以使用 列出加载到 PulseAudio 中的所有接收器pactl list short sinks
。这应该产生以下形式的事物列表
0 alsa_output.pci-0000_06_00.6.HiFi__hw_Generic__sink module-alsa-card.c s16le 2ch 48000HzIDLE
Run Code Online (Sandbox Code Playgroud)
如果您的 HDMI 音频没有出现在您的列表中,那么我们可能已经发现了问题,所以请继续阅读。如果您不确定是否有效,您还可以运行pactl list sinks | grep description
以获取有关检测到的设备的更多人类可读的描述。我认为 hdmi 接收器将具有“blah High Definition Audio Controller”形式的描述,而非 hdmi 接收器可能具有“blah blah blah 扬声器 + 耳机”之类的描述。
运行aplay -l
以获取硬件播放设备列表。对我来说,输出看起来像
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 10: HDMI 4 [HDMI 4]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 11: HDMI 5 [HDMI 5]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC245 Analog [ALC245 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)
特别是,有多种 HDMI 设备可用。我们想要找到与您插入电缆的 HDMI 端口实际对应的端口。
首先要做的是运行alsamixer
以确保您的 HDMI 设备没有静音。您应该会看到如下所示的屏幕。
用于F6
选择正确的声卡。如果您MM
在任何插槽中看到 ,则表示它已静音。选择它并按M
取消静音。Esc
完成后点击。
实际上,您可能只需要取消其中一个插槽的静音(实际上与您的 hdmi 端口关联的插槽可能是第一个),但将它们全部取消静音也没什么坏处。
处理完毕后,我们现在可以测试您的音频。跑步
speaker-test --channels 2 --test wav --device hw:[card],[device]
Run Code Online (Sandbox Code Playgroud)
其中 [card],[device] 指的是 输出中的数字aplay -l
,例如我首先使用hw:0,3
。您将对前面列出的每个 HDMI 硬件设备执行此操作,直到其中一个设备实际发出可听见的声音。
现在您已经确定了与您的 hdmi 端口关联的卡和设备号,只需运行
pactl load-module module-alsa-sink device=hw:[card],[device]
Run Code Online (Sandbox Code Playgroud)
您现在应该能够转到声音设置并看到一个新的可选输出设备(我的称为TU116 High Definition Audio Controller
)。选择它并查看您的 HDMI 音频现在是否正常工作。如果没有,我帮不了你。但如果确实如此,那么恭喜你。
目前,如果您重新启动计算机,则必须重新运行此load_module
命令才能使 hdmi 再次工作。为了让事情变得更好一点,编辑“/etc/pulse/default.pa”(以 root 身份),并在文件末尾附近添加以下行
load-module module-alsa-sink device=hw:[card],[device]
Run Code Online (Sandbox Code Playgroud)
之后(特别是如果您跳过了步骤 3),您可能需要运行
rm -r ~/.config/pulse
killall pulseaudio
pulseaudio --start
Run Code Online (Sandbox Code Playgroud)
重新启动 PulseAudio。
最后,一些小问题/评论
killall pulseaudio; pulseaudio --start
在重新启动计算机后运行才能将 PulseAudio 加载到 hdmi 接收器中。我不知道如何解决这个问题。为了响应上面的最后一个要点,我最近编写了一个 bash 脚本,它将自动执行此处描述的步骤。你可以在github上找到它。与引用链接中的脚本相比,我编写的脚本(尝试)对正在运行的机器做出更少的假设;特别是,它并不假设 PulseAudio 已(手动)配置为检测您的 HDMI 电缆。如果没有发生这种情况,它将运行上述过程,然后将音频切换到 hdmi。
可以使用 udev 配置此脚本,以便在插入或拔出 HDMI 电缆时运行。为此,请在文件夹中/etc/udev/rules.d
添加一个包含以下行的文件
KERNEL=="card*", SUBSYSTEM=="drm", ACTION=="change", RUN+="[path-to-script]"
Run Code Online (Sandbox Code Playgroud)
(在我的机器上,我将脚本保存在/usr/local/bin/hdmi.sh
)。创建此文件后,运行udevadm control --reload-rules
. 完成此操作后,您应该能够插入 HDMI 电缆并让一切正常工作。当您拔下电缆时,音频应该切换回您的计算机。
新的问题/评论
speaker-test
以确定要在 PulseAudio 中加载哪个卡/设备。因此,运行时,您可能会听到“左/右”声音(或任何speaker-test
默认声音)。ENABLE_DESKTOP_NOTIFICATIONS
变量。如果您希望在运行时收到通知,请将此值设置为 1。小智 9
我正在使用 Mint 20.1 和 Xfce,这为我解决了这个问题:
pavucontrol
)我意识到这并不完全是 Ubuntu,但足够接近,我认为类似的事情在 Ubuntu 上也应该是可能的。
小智 6
我认为至少有三个可能的原因:
alsamixer
并确保所有声音设备均已取消静音。我认为您已经这样做了,因为您发布的链接之一提到了这一点。aplay -D plughw:0,1 /usr/share/sounds/alsa/Noise.wav
- 根据aplay -l
例如 1,3 或 1,7 等的输出尝试所有可能的组合uname -r
以验证您的内核版本。您可以执行的其他步骤:
我还推荐 Arch Linux wiki:Advanced Linux Sound Architecture。它帮助我解决了当时的声音问题。
归档时间: |
|
查看次数: |
14287 次 |
最近记录: |