通过 Bash 脚本更改音量

作者:Mitch Frazier

如果您的系统使用 ALSA 进行声音处理,那么这里提供的脚本中的函数可以用来获取和设置系统的音量。 例如,您可以运行一个监控脚本,当发出警报时提高音量,然后在警报结束后恢复到之前的音量。

get 函数使用amixer输出简单混音器控制 "Master" 的信息,然后使用grepcut从输出中获取正确的值。

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以获得您想要的音量。

Mitch Frazier 是 Emerson Electric Co. 的一名嵌入式系统程序员。自 2000 年代初以来,Mitch 一直是 Linux Journal 的贡献者和朋友。

加载 Disqus 评论