如何使用命令行更改音量?


72

我试图使用我的编程脚本来控制音量。如何在Fedora 15,Ubuntu Linux中执行以下操作?

  1. 静音/取消静音
  2. 调高音量和调低音量

注意:请注意,我使用Web USB麦克风/扬声器以及模拟麦克风/扬声器。我想适用于所有人。


1
如果有人从lubuntu来到这里修复其音量控制按钮,请放入<command>amixer -D pulse sset Master 3%+ unmute</command>相关的按键绑定,~/.config/openbox/lubuntu-rc.xml然后openbox --reconfigure为我运行修复该问题
Rhombidodecahedron

Answers:


80

您可以使用混音器。它alsa-utils在Ubuntu和Debian的软件包中。

amixer不带参数运行可大致了解默认设备的控件。

您也可以使用alsamixer不带参数的(来自同一程序包)以获得更直观的概述。使用F6查看并在设备之间切换。通常,您可能有PulseAudio和硬件声卡可供选择。

然后amixerset命令一起使用来设置音量。例如,将主通道设置为50%:

amixer set Master 50%

Master 是控件名称,应与不带参数运行时看到的名称匹配。

注意%符号,如果没有符号,它将被视为0-65536级别。

如果PulseAudio不是您的默认设备,则可以使用该-D开关:

amixer -D pulse set Master 50%

注释中指出了其他有用的命令:

要增加/减少+/-数字后的音量使用,请使用

amixer set Master 10%+
amixer set Master 10%-

要静音,取消静音或在静音/取消静音状态之间切换,请使用

amixer set Master mute
amixer set Master unmute
amixer set Master toggle

另请注意,可能会有两个不同的百分比刻度,默认的原始刻度,对于某些设备,基于分贝的刻度更自然,也由alsamixer。使用-M使用后者。

最后,如果您仅对PulseAudio感兴趣,则可能需要签出pactl(请参阅其他答案之一)。


4
谢谢!有两种方法可以做到这一点。1.作为一个很好的例子:混音器设置了主静音。混音器设置大师不静音;2. yum -y安装xdotool;xdotool键XF86AudioRaiseVolume; xdotool键XF86AudioLowerVolume;
YumYumYum 2011年

15
而作为一个另外,可以增加或减小音量amixer set Master 10%+amixer set Master 10%-
用户

2
这在Ubuntu中不起作用。
塞林2012年

2
我不同意@Cerin。现在可以在Ubuntu LTS 12上使用。请注意,Min master 区分大小写(必须为大写)。
ashes999 2014年

5
塞林说得对。这是行不通的。起作用的是:amixer -D pulse sset Master 50%
shivams 2015年

30

静音:

amixer -D pulse sset Master mute

取消静音:

amixer -D pulse sset Master unmute

要将音量调高5%:

amixer -D pulse sset Master 5%+

要将音量调低5%:

amixer -D pulse sset Master 5%-


1
您还可以在后面的命令中添加取消静音功能,以便在更改音量时自动取消静音(为方便起见):amixer -D pulse sset Master unmute 5%+
Roman Golyshev

16

pactl / pacmd(与不同amixer)允许将音量增加超过100%:-)。

pactl set-sink-mute 0 toggle  # toggle mute
pactl set-sink-volume 0 0     # mute (force)
pactl set-sink-volume 0 100%  # max
pactl set-sink-volume 0 +5%   # +5% (up)
pactl set-sink-volume 0 -5%   # -5% (down)

pavucontrol与中不同,可以进行超过100%的手动设置alsamixer

注意:如果要在具有不同接收器的不同主机上共享相同的命令,则可以将其@DEFAULT_SINK@用作接收器而不是number 0

pactl set-sink-volume @DEFAULT_SINK@ +5%

您将默认接收器设置为pactl set-default-sink my-sink-name(使用列出名称pactl list short sinks)。

更新:添加toggle mute(感谢Don Joe)。

资料来源:askubuntu.comwiki.archlinux.org


5

更高的音量:

amixer set Master 3%+

较低的音量:

amixer set Master 3%-

静音切换:

amixer set Master toggle

i3/的示例键绑定sway,命令exec如下:

bindsym XF86AudioRaiseVolume exec amixer set Master 3%+
bindsym XF86AudioLowerVolume exec amixer set Master 3%-
bindsym XF86AudioMute exec amixer set Master toggle
bindsym Ctrl+$alt+Up  exec amixer set Master 3%+
bindsym Ctrl+$alt+Down exec amixer set Master 3%-

4

如果用户已将设备静音,则必须“取消静音”。否则可以设置百分比,但是声音仍然关闭

amixer set 'Master' 100% unmute
/usr/bin/amixer set 'PCM' 100% unmute

3

pevik的答案对于PulseAudio几乎是正确的,有两点需要提及:

  • 负音量更改命令将产生错误,因为它的负数部分将被解释为单独的(无法识别)选项;您需要在负数之前的某个位置关闭带有双减号的选项解析,例如“--5%”

  • 真正的静音状态是应该可以使用相同的键进行切换的功能,如果您只是将音量设置为固定值0,该功能将无效,因此正确的命令是:

pactl set-sink-mute @DEFAULT_SINK@ toggle

LE:第一个提示是否适用可能取决于您正在运行的PulseAudio版本或发行版中的其他内容-我注意到在Ubuntu 16上,它在没有“-”的情况下有效,如果添加“-”则失败在负百分比前面。


非常好的thx,当我们为快速获得更好的游戏fps而频繁地更改窗口管理器时,这非常完美,因此我使用了xbindkeys-config,我什至不必重启X :)(笑声……没有双关语的笑声)
水瓶座Power

2

混音器为我工作,但是当我按下键盘上的调高音量按钮时,却没有得到很好的动画效果。

我决定使用xte从命令行直接按该键:

提高音量: xte 'key 0x1008ff13'

音量减小: xte 'key 0x1008ff11'

静音: xte 'key 0x1008ff12'

我通过使用找出了keyym(十六进制数字)xev

sudo apt-get install xbindkeys xautomation
xev

然后按键盘上的调高音量按钮以获取按键音。密钥符号可能因系统而异,因此从xev找到它是最可靠的方法。

结果对我来说是这样的:

KeyRelease事件,序列37,合成NO,窗口0x2c00001,根0xef,子w0x0,时间6660080,(566,573),根:(664,651),状态0x0,键码123(键符号0x1008ff13,XF86AudioRaiseVolume),same_screen是,XLookupString给出0字节:XFilterEvent返回:False

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.