通过 CLI 在 Linux 中使音频静音的脚本有效,但需要帮助
Script to mute audio in Linux from CLI works, but help needed
我经常在工作时播放新闻,并且想在广告期间静音,所以四处寻找并发现这个
它产生了一些好东西并导致了以下脚本非常有效:
#!/bin/bash
#Mute, wait, unmute: attempt 1
for x in `amixer controls | grep layback` ; do
amixer cset "${x}" on ; done
echo Mute for how many seconds?
read v1
sleep $v1
for x in `amixer controls | grep layback` ; do
amixer cset "${x}" 700% ; done
这行得通,但会导致终端屏幕上出现可怕的混乱:(试一试)
<p>161 [~]$ MM<br>
numid=16,iface=MIXER,name='Master Playback Switch'<br>
; type=BOOLEAN,access=rw------,values=1<br>
: values=on<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Switch'<br>
numid=15,iface=MIXER,name='Master Playback Volume'<br>
; type=INTEGER,access=rw---R--,values=1,min=0,max=127,step=0<br>
: values=0<br>
| dBscale-min=-95.25dB,step=0.75dB,mute=1<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>...etc</p>
通过在 cset
之后添加 -q 来清理一点
<p>166 [~]$ MM<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Switch'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Switch'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Switch'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>
amixer: Control default element write error: Operation not
permitted<br>...etc</p>
但为什么我会收到所有这些 "Wrong control identifier" 消息?
我试着 man grep
但后来我的头掉了下来,我不得不用胶带把它重新绑起来,现在我头疼了。我饿了。
干杯
全民
试试这个:
read -p "Mute for how many seconds? " v1 ; \
amixer controls | grep layback | grep -v ' Ma' |
xargs -I '{}' amixer -q cset '{}' on ; \
sleep $v1 ; \
amixer controls | grep layback | grep -v ' Ma' |
xargs -I '{}' amixer -q cset '{}' 700%
备注:
- 主要的问题似乎是像 'Playback Con Mask' 和
'Playback Channel Map' 与
amixer
选项不兼容。使用 grep -v
过滤掉那些混合器可以解决这个问题。
read
应该先走,否则静音持续输入
秒 加上 用户输入它们所花费的时间。
xargs
在这里不是必需的,但它似乎比使用更简单
带有变量的循环。
- 这些
; \
可以更轻松地一次性复制和粘贴到命令行。在脚本中不需要 ; \
行结尾。
我经常在工作时播放新闻,并且想在广告期间静音,所以四处寻找并发现这个
它产生了一些好东西并导致了以下脚本非常有效:#!/bin/bash
#Mute, wait, unmute: attempt 1
for x in `amixer controls | grep layback` ; do
amixer cset "${x}" on ; done
echo Mute for how many seconds?
read v1
sleep $v1
for x in `amixer controls | grep layback` ; do
amixer cset "${x}" 700% ; done
这行得通,但会导致终端屏幕上出现可怕的混乱:(试一试)
<p>161 [~]$ MM<br>
numid=16,iface=MIXER,name='Master Playback Switch'<br>
; type=BOOLEAN,access=rw------,values=1<br>
: values=on<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Switch'<br>
numid=15,iface=MIXER,name='Master Playback Volume'<br>
; type=INTEGER,access=rw---R--,values=1,min=0,max=127,step=0<br>
: values=0<br>
| dBscale-min=-95.25dB,step=0.75dB,mute=1<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>...etc</p>
通过在 cset
之后添加 -q 来清理一点<p>166 [~]$ MM<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Switch'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Switch'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Switch'<br>
Wrong control identifier: Playback<br>
Wrong control identifier: Volume'<br>
amixer: Control default element write error: Operation not
permitted<br>...etc</p>
但为什么我会收到所有这些 "Wrong control identifier" 消息?
我试着 man grep
但后来我的头掉了下来,我不得不用胶带把它重新绑起来,现在我头疼了。我饿了。
干杯 全民
试试这个:
read -p "Mute for how many seconds? " v1 ; \
amixer controls | grep layback | grep -v ' Ma' |
xargs -I '{}' amixer -q cset '{}' on ; \
sleep $v1 ; \
amixer controls | grep layback | grep -v ' Ma' |
xargs -I '{}' amixer -q cset '{}' 700%
备注:
- 主要的问题似乎是像 'Playback Con Mask' 和
'Playback Channel Map' 与
amixer
选项不兼容。使用grep -v
过滤掉那些混合器可以解决这个问题。 read
应该先走,否则静音持续输入 秒 加上 用户输入它们所花费的时间。xargs
在这里不是必需的,但它似乎比使用更简单 带有变量的循环。- 这些
; \
可以更轻松地一次性复制和粘贴到命令行。在脚本中不需要; \
行结尾。