从命令行更改声音输出

从命令行更改声音输出

我编写了一个脚本,使用 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.paroot 身份编辑。不过,更好的方法是在我们的用户目录中处理此文件的副本,我们可以将其放在~/.config/pulse/

cp /etc/pulse/default.pa ~/.config/pulse/

我们在此处所做的设置将覆盖 中的设置/etc/pulse,因此可以安全地在此处进行实验。如果出现任何问题,我们只需删除此文件即可让 pulseaudio 再次使用系统范围的默认值。

所有更改都需要default.pa重置 pulseaudio 服务器才能生效。可以使用以下方法完成:

pulseaudio -k

另请参阅:
如何在播放过程中使用“pacmd set-default-sink”更改 pulseaudio 接收器?

相关内容