通过一个命令将所有麦克风静音

通过一个命令将所有麦克风静音

我正在运行 Linux Mint 19.1,并且想为使我的麦克风静音和取消静音的脚本分配一个快捷键。我发现了许多针对单个输入执行此操作的解决方案,例如

amixer set Capture toggle
pactl set-source-mute $source_number toggle

然而,当我在不同的输入(内置麦克风、蓝牙耳机、有线耳机)之间切换时,我更喜欢能够同时打开/关闭所有这些输入的设备。这意味着它们要么全部打开,要么全部关闭,不存在一个打开而另一个关闭的风险。
我不确定天气或分配的源编号是否pactl恒定,并且希望有一个能够可靠工作的解决方案,无论我是否重新连接麦克风 42 次,甚至连接不同的(蓝牙)设备。

是否有一个命令可以获取系统使用的源(与系统相同指的是许多应用程序,例如 Zoom)?
如果是这样,当我运行命令/脚本时,我想获取该设备的状态并将所有相关设备的状态设置为相反的状态。

对我如何做到这一点有什么建议吗?

答案1

虽然这不能回答你的问题,但有效的方法是使用

pactl set-source-mute @DEFAULT_SOURCE@ toggle

切换当前使用的麦克风或

 pactl set-source-mute @DEFAULT_SOURCE@ 1

静音而不是切换

答案2

使用 awk 您可以查找并迭代所有输入:

pactl list short sources | awk '/input.*RUNNING/ {system("pactl set-source-mute " $1 " toggle")}'

注意:如果稍后连接麦克风并且您已经将某些设备静音,则最终可能会导致不同设备之间的静音状态不同步。

相关内容