如何通过命令行或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%,但音量仍处于爆炸状态。
另一个缺点是我必须指定确切的有源输出设备,如果有多个设备,我可能不知道。例如,如果我有“主人”和“耳机”,我如何确定哪一个是有源设备?
答案 0 :(得分:40)
Ubuntu使用pulseaudio作为sounderver。可以使用pactl
和pacmd
实用程序从命令行控制它,例如:
pactl set-sink-volume 0 20%
会将接收器#0的音量设置为20%。
请参阅:man pactl
和pacmd help
编辑:
要避免-xx
被解释为命令行选项,您必须在其前面添加--
。从那一点开始停止选项解析:
pactl set-sink-volume 0 -- -20% # or:
pactl -- set-sink-volume 0 -20% # doesn't matter where the `--` goes
答案 1 :(得分:16)
我使用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库。
答案 2 :(得分:6)
amixer 命令在Ubuntu 13.04中运行,
将音量提高5%
amixer -D pulse sset Master 5%+
减少5%的音量
amixer -D pulse sset Master 5%-
pactl 或 pacmd 在Ubuntu 13.04中无法正常使用。
答案 3 :(得分:2)
读取音量的脏片段(不要忘记音量在ubuntu上超过“100%” - 此时返回~0.66)。
#!/usr/bin/python
import subprocess
vol = int(filter(lambda l: l.startswith('set-sink-volume'),
subprocess.check_output(["pacmd","dump"])
.split('\n'))[0]
.split()[-1],16)/100000.
print vol
答案 4 :(得分:1)
您也可以尝试简单而优雅的ponymix utill。它可以很容易地增大/减小音量,切换(静音/取消静音)音频等。
首先获取ponymix
在我的情况下,我可以看到接收器0 和源0 。我可以使用数字 0 或全名内置音频数字立体声(HDMI)来控制音频。
将卡0的音量增加5%:ponymix -c 0 increase 5
将卡0的音量减少5%:ponymix -c 0 decrease 5
答案 5 :(得分:1)
我可以推荐这个控制pulseaudio的工具: https://github.com/graysky2/pulseaudio-ctl
me@mypc ~ $ pulseaudio-ctl
pulseaudio-ctl v1.63
/usr/bin/pulseaudio-ctl {up,down,mute,mute-input,set,atmost,full-status} [n]
Where up and down adjust volume in ±5 % increments
Where up and down [n] adjust volume in ±n % increments
Where mute toggles the mute status on/off
Where mute-input toggles the input status on/off
Where set set the volume to [n] %
Where atmost only takes effect if current volume is higher than [n]
Where full-status prints volume level, sink and source mute state to stdout
Optionally, redefine an upper threshold in /home/me/.config/pulseaudio-ctl/config
Volume level : 80 %
Is sink muted : no
Is source muted : no
Detected sink : 1
Detected source : 3
Pulse version : 8.0
me@mypc ~ $