我编写了一个脚本,使用 xrandr 将我的显示输出从 DVI(我的显示器)更改为 HDMI(我的电视)。在此脚本中,我还想将我的音频输出从模拟线路输出更改为 HDMI。
我尝试了以下方法:
pacmd set-default-sink alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1
这似乎将一些声音(例如在桌面上调整音量时听到的声音)更改为 HDMI,但应用程序(如 Steam 大画面模式和各种游戏)的默认声音输出仍设置为模拟。要将其更改为 HDMI,我需要单击桌面上的声音设置面板并手动将其更改为 HDMI。
如何可靠地从命令行更改声音输出?或者,当我更改声音输出时,Ubuntu 声音设置在后台究竟做了什么?
我正在运行 Ubuntu 15.10。
答案1
确实可以使用 pulseaudio 的 CLI 界面来更改默认输出设备:
pacmd set-default-sink <sink_name|index>
但是,此默认设备可能会被模块流恢复默认情况下会加载。除非我们使用以下参数调用此模块,否则此模块还将恢复设备:
load-module module-stream-restore restore_device=false
应该将其放入我们的代码中default.pa
,以替换那里的相应行。
因此,为了使此更改对所有用户有效,我们需要以/etc/pulse/default.pa
root 身份编辑。不过,更好的方法是在我们的用户目录中处理此文件的副本,我们可以将其放在~/.config/pulse/
cp /etc/pulse/default.pa ~/.config/pulse/
我们在此处所做的设置将覆盖 中的设置/etc/pulse
,因此可以安全地在此处进行实验。如果出现任何问题,我们只需删除此文件即可让 pulseaudio 再次使用系统范围的默认值。
所有更改都需要default.pa
重置 pulseaudio 服务器才能生效。可以使用以下方法完成:
pulseaudio -k