如何在 Ubuntu 中以编程方式更改音量

新手上路,请多包涵

您如何通过命令行或 API(最好是 Python)以编程方式更改 Ubuntu 上 Gnome 的音量?

我发现类似问题的唯一答案使用 amixer ,这似乎对 Ubuntu 12.04 没有影响。跑步:

 amixer set Headphone 10-

显示:

 Simple mixer control 'Headphone',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 115
  Mono:
  Front Left: Playback 0 [57%] [-57.50dB] [on]
  Front Right: Playback 0 [57%] [-57.50dB] [on]

每次运行时 x% 都会改变。不幸的是,它对实际音量没有影响。最终它显示为 0%,但音量仍处于最大状态。

另一个缺点是我必须指定确切的活动输出设备,如果有多个设备我可能不知道。比如我有“Master”和“Headphone”,如何判断哪个是激活设备?

原文由 Cerin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

Ubuntu 使用 pulseaudio 作为声音服务器。可以使用 pactlpacmd 实用程序从命令行控制它,例如:

 pactl set-sink-volume 0 20%

会将水槽 #0 的体积设置为 20%。

见: man pactlpacmd help


编辑:

为避免 -xx 被解释为命令行选项,您必须在其前面加上 -- 前缀。从那时起停止选项解析:

 pactl set-sink-volume 0 -- -20%    # or:
pactl -- set-sink-volume 0 -20%    # doesn't matter where the `--` goes

原文由 mata 发布,翻译遵循 CC BY-SA 3.0 许可协议

我用 ALSA 混音器来做。您可能需要下载 python-alsaaudio

 sudo apt-get install python-alsaaudio

然后控制音量,

 import alsaaudio
m = alsaaudio.Mixer()   # defined alsaaudio.Mixer to change volume
m.setvolume(50) # set volume
vol = m.getvolume() # get volume float value

阅读 http://pyalsaaudio.sourceforge.net/libalsaaudio.html 以详细了解 alsaaudio 库。

原文由 Froyo 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题