从命令行更改声音输出

Ech*_*ows 10 sound pulseaudio hdmi 15.10

我编写了一个脚本,使用 xrandr 将我的显示输出从 DVI(我的显示器)更改为 HDMI(我的电视)。在此脚本中,我还想将音频输出从模拟线路输出更改为 HDMI。

我尝试了以下方法:

pacmd set-default-sink alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1
Run Code Online (Sandbox Code Playgroud)

这似乎将某些声音(例如您在桌面上调整音量时听到的声音)更改为 hdmi,但仍将应用程序(例如 Steam 大图模式和各种游戏)的默认声音输出设置为模拟。要将其更改为HDMI,我需要单击桌面上的声音设置面板并手动将其更改为HDMI。

如何可靠地更改命令行的声音输出?或者,当我更改声音输出时,Ubuntu 声音设置到底做了什么?

我正在运行 Ubuntu 15.10。

Tak*_*kat 8

确实可以使用pulseaudio的CLI界面更改默认输出设备:

pacmd set-default-sink <sink_name|index>
Run Code Online (Sandbox Code Playgroud)

然而,这个默认设备可能会被默认加载的module-stream-restore更改。该模块还将恢复设备,除非我们使用以下参数调用它:

load-module module-stream-restore restore_device=false
Run Code Online (Sandbox Code Playgroud)

这应该放在我们default.pa的替换相应行那里。

为了使此更改对所有用户有效,我们因此需要以/etc/pulse/default.paroot身份编辑。然而,更好的方法是在我们的用户目录中处理此文件的副本,我们可以将它放在~/.config/pulse/

cp /etc/pulse/default.pa ~/.config/pulse/
Run Code Online (Sandbox Code Playgroud)

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

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

pulseaudio -k
Run Code Online (Sandbox Code Playgroud)

另请参阅:
如何在播放期间使用“pacmd set-default-sink”更改pulseaudio sink?