如何从命令行获取音量?


15

我在平铺窗口管理器上有一个文本状态栏,并且正在使用tcl向其提供信息。目前,我需要一个命令行,用于输出0%到100%的音量。我正在使用Arch Linux。


看起来您应该可以通过解析来做到这一点/var/lib/alsa/asound.state
jordanm 2013年

注意:将来,说您正在使用Arch并不是很重要。真正重要的是您使用的是哪个声音子系统,例如ALSA,OSS或PulseAudio。
奋斗

1
而不是在标题中添加“ closed”,您只需回答自己的问题并留下即可
jordanm

Answers:


15

amixer在状态栏中单线分析输出的音量:

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)

什么[][]意思
大约

4
@approximatenumber它将字段分隔符设置为][
杰森沃良

凉。我不知道您可以为F
mihai

您如何将该命令存储在变量中?
mike23 '18

@ mike23vol=$(awk '/%/ {gsub(/[\[\]]/,""); print $4}' <(amixer sget Master))
jasonwryan

12

您可以amixer用来执行此操作。

例子

$ amixer get Master
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [off]
  Front Right: Playback 65536 [100%] [off]

您还可以更改它并使其静音,如下所示:

设定音量75%

$ amixer set Master 75%
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 49152 [75%] [on]
  Front Right: Playback 49152 [75%] [on]

静音/取消静音

$ amixer set Master toggle
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [on]
  Front Right: Playback 65536 [100%] [on]

如果您不想通过--quiet开关看到任何输出,则可以使输出静音。

$ amixer --quiet set Master 75%
$ 

6

amixer sget Master | grep 'Right:' | awk -F'[][]' '{ print $2 }'
85%

剩下

amixer sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

声音服务器

如果未将Pulseaudio用作默认值,则可以指定要与amixer哪个服务器一起使用-D pulse

amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

这对我不起作用...大师由于某种原因没有“左”和“右”,尽管有“扬声器”之类的其他频道。
迈克尔
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.