找出声音输出是否静音(ALSA with Pulseaudio)

bp9*_*p99 4 scripting alsa audio pulseaudio alsamixer

我正在尝试查找输出10取决于我是否将输出静音的命令。

我正在尝试这个:

amixer sget Master
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 64
  Mono: Playback 64 [100%] [0.00dB] [on]
Run Code Online (Sandbox Code Playgroud)

现在这里的值会相应地改变(如果我减小音量,百分比和 dB 值会发生变化)。但是,如果我进入Pavucontrol“输出设备”选项卡上的输出并将其静音,则上述命令的输出保持不变。几乎没有任何变化。但是我的声音确实静音了。

我应该使用什么命令?为什么不[on]改成[off]?不应该吗?

提前致谢。

bp9*_*p99 6

经过长时间的搜索,我实际上设法找到了答案。这可能对其他人在那里寻找类似的东西有所帮助!

你需要什么:

pacmd list-sinks
Run Code Online (Sandbox Code Playgroud)

这个命令有这样一行:

muted: no
Run Code Online (Sandbox Code Playgroud)

当我将设备静音时,这no确实会更改为yes。完美的。如果有人需要,我设法使用此命令剥离输出:

pacmd list-sinks | awk '/muted/ { print $2 }'
Run Code Online (Sandbox Code Playgroud)

抱歉发布得太早,似乎我无法在任何地方找到解决方案。


小智 6

或者,对于像我这样没有 PulseAudio 或只想使用 PulseAudio 的人amixer,一种解决方案是:

amixer get Master | sed 5q | grep -q '\[on\]'
Run Code Online (Sandbox Code Playgroud)

0如果取消静音和1静音则返回。