通过 Bash 脚本更改音量
发布于 2008 年 9 月 24 日
如果您的系统使用 ALSA 进行声音处理,那么这里提供的脚本中的函数可以用来获取和设置系统的音量。 例如,您可以运行一个监控脚本,当发出警报时提高音量,然后在警报结束后恢复到之前的音量。
get 函数使用amixer输出简单混音器控制 "Master" 的信息,然后使用grep和cut从输出中获取正确的值。
set 函数也使用amixer来设置音量。 它使用 "cset" 选项来amixer.
脚本如下:
#!/bin/bash
#
#####################################################################
# Get current volume.
function get_volume()
{
mixer=$(amixer get Master | grep 'Front Left:')
echo $mixer | cut -d ' ' -f 4
}
#####################################################################
# Set volume.
function set_volume()
{
amixer cset iface=MIXER,name="Master Playback Volume" $1 >/dev/null
}
if [[ $(basename $0 .sh) == 'sound' ]]; then
sound_file=~/Documents/sounds/notify.wav
if [[ "$1" ]]; then sound_file="$1"; fi
ovol=$(get_volume)
echo "Current volume: $ovol"
aplay $sound_file
sleep 2
vol=40
echo "Playing at: $vol"
set_volume $vol
aplay $sound_file
sleep 2
echo "Again at: $ovol"
set_volume $ovol
aplay $sound_file
fi
# vim: tabstop=4: shiftwidth=4: noexpandtab:
# kate: tab-width 4; indent-width 4; replace-tabs false;
如果将脚本保存为sound.sh并直接运行,传入一个声音文件的名称,它将在当前音量下播放该文件,然后提高音量再次播放,最后恢复音量并最后一次播放。 如果在运行脚本之前打开混音器控制,您应该会看到主音量控制随着脚本更改音量而移动。 您可以调整行中的值vol=40以获得您想要的音量。