我在 14.04.1 上使用 Nvidia 专有驱动程序,我想在电视上使用 HDMI。我连接了电缆,但我看到另一个桌面,无法收听音频,我想听到 PC 音频并看到与我的显示器上相同的内容,可以吗?谢谢。
答案1
我的 Sony 32 英寸液晶电视作为外接屏幕,HDMI 视频播放正常。但音频问题一直存在。这里有一个通过 HDMI 启用音频的简单技巧,这样你就可以通过电视或家庭影院系统享受高品质的声音。
主板:基于 NVIDIA GeForce 8300 芯片组的 M3N78-EM
操作系统:Ubuntu 12.04 Precise Pangolin
这是我的 VGA 控制器信息:
$ lspci|删除 VGA
02:00.0 VGA 兼容控制器:NVIDIA Corporation C77 [GeForce 8300](rev a2)
- 首先,我们需要确保安装了 NVIDIA 专有驱动程序。Ubuntu 在安装时默认安装了 NVIDIA 驱动程序(我在安装过程中选择了第三方软件安装选项)。系统设置 -> 附加驱动程序应显示如下所示的对话框。在 shell 中,您可以看到命令“lsmod | grep nvidia”的“nvidia”。
- 配置连接到 HDMI 端口的屏幕。对于 NVIDIA,Ubuntu 提供的系统设置 -> 显示工具无法检测外部显示器。但 NVIDIA 提供了一个强大的基于 GUI 的设置工具,使这项工作更加轻松。可以通过 dash 输入“NVIDIA”->“NVIDIA X 服务器设置”->“X 服务器显示配置”来访问此工具。退出前,不要忘记单击“保存到 X 配置文件”以保存更改。
- 在音量指示器(在顶部栏)-> 声音设置... -> 输出 -> HDMI/显示端口中选择 HDMI 音频作为输出设备。
上述步骤应该可以完成任务。如果没有,您可以检查 S/PDIF 设置的状态。它不应该被静音。您可以使用“alsamixer”命令进行检查。以下屏幕截图显示 S/PDIF 已静音。
选择静音的 S/PDIF 条并按 M 取消静音。它应该如下图所示。
它应该可以解决问题。现在您应该可以通过 HDMI 欣赏音频了。现在您可以通过发出“sudo alsactl store”命令将其永久保存,这将保存上述设置。
如果您没有成功,您可以尝试以下调整。
创建一个名为 /etc/asound.conf 的文件(如果已有文件,只需备份该文件)并输入以下内容,然后重新启动机器。
pcm.!默认 hdmi:NVidia pcm:iec958 hdmi:NVidia
答案2
如果上述方法仍然不起作用并且您仍然无法通过 HDMI 听到声音。
经过几天的苦苦思索,我在 ALSA 网站上发现了一个关于 14.04 内核的错误的部分,该错误会将声音发送到错误的 HDMI 端口或虚拟设备。
ALSA 网站称;
在 Linux 内核 3.8-rc1 中,引入了一个回归问题,这可能会导致 GeForce 520 及更新的 GPU 将音频路由到意外的显示器。所选的显示器甚至可能未连接或无法接收音频,因此音频可能会丢失。在系统启动时,无论使用哪个 ALSA 设备播放音频,都可能选择与 ALSA 物理流 ID 3 对应的显示器作为音频接收器。在尝试同时播放多个音频流后,路由可能会发生变化。此回归问题由以下提交引入: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6169b673618bf0b2518ce413b54925782a603f06 “ALSA:hda - 始终打开 HDMI/DP 引脚”
此补丁包含在 Linux 内核 3.8-rc1 中。以下提交修复了回归问题:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=75fae117a5dbde5ab984fa5c60705758cfbc6433 “ALSA:hda/hdmi-允许动态启用PIN_OUT”
此补丁包含在Linux内核3.14-rc1中。
更改为 14.10 内核解决了我的问题。
sudo apt-get install linux-image-generic-lts-utopic linux-headers-generic-lts-utopic