如何使用命令行找到麦克风静音或取消静音的确切状态或麦克风的音量级别?

如何使用命令行找到麦克风静音或取消静音的确切状态或麦克风的音量级别?

这很奇怪,我有一个默认麦克风,还有另一个第二个麦克风。当我使用此命令时,它总是显示未静音,但麦克风音量为 0%。我如何或有什么方法可以准确找到这些值。

$ pactl list | sed -n '/^Source/,/^$/p' | grep Mute
    Mute: no
    Mute: no
    Mute: no

答案1

通过使用Pulseaudio 命令行界面我们将获得大量关于可用来源的信息

pacmd list-sources

将显示一个相当长的列表。当前活动输入标有星号。我们可以将其与grep但随后会丢失输出对哪个源有效的信息

pacmd list-sources | grep volume

要将输出设置为定义的值,我们需要知道它的索引,该索引也是由list-sources问题给出的

pacmd set-source-volume <index> <value> # value: 0 = mute 65536 = 100%

我们可能还需要使用

pacmd set-source-mute <index> 0

答案2

您可以使用 访问此信息amixer。要列出所有声音控件,您可以发出命令

$ amixer controls
...
numid=18,iface=MIXER,name='Capture Source'
numid=19,iface=MIXER,name='Capture Switch'
numid=20,iface=MIXER,name='Capture Volume'
...

然后使用以下代码读取控件的值

$$ amixer cget numid=20
numid=20,iface=MIXER,name='Capture Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=15,step=0
  : values=0,0
  | dBscale-min=0.00dB,step=1.50dB,mute=0

查看 的手册页amixer。 也很有趣alsamixer,它为你提供了更直观的命令行界面。

答案3

我想通过以下方式来实现这一点pactl,这就是我想出的办法:

# Get active audio source index
CURRENT_SOURCE=$(pactl info | grep "Default Source" | cut -f3 -d" ")

# List lines in pactl after the source name match and pick mute status
pactl list sources | grep -A 10 $CURRENT_SOURCE | grep "Mute: yes" 

答案4

这是一个简单的解决方案,只需一行即可切换/取消麦克风静音

我相信这有帮助

我创建了一个 mictoggle 在线脚本

$ cat /usr/local/bin/mictoggle

pactl list sources | grep -qi 'Mute: yes' && pactl set-source-mute 1 false || pactl set-source-mute 1 true

相关内容