【发布时间】:2013-10-11 01:42:15
【问题描述】:
我需要在 bash 脚本中设置系统音量,但我不知道如何执行此操作。
我应该使用alsactl 吗? /proc 或 /sys 中是否有一些我可以使用的值?
【问题讨论】:
-
找到了我要找的东西;混合器。例如 'amixer set Master 75%' 会将主音量设置为 75% :)
我需要在 bash 脚本中设置系统音量,但我不知道如何执行此操作。
我应该使用alsactl 吗? /proc 或 /sys 中是否有一些我可以使用的值?
【问题讨论】:
您应该使用amixer 工具。
不带参数运行amixer 以获取混音器控件列表。
使用这样的命令:
amixer set Master 50% # set absolute
amixer set Master 2dB+ # set relative
amixer set Master unmute
【讨论】:
amixer set Master 2dB+ 不适合我,amixer -D pulse sset Master 2%+ 适合我。
您也可以使用pactl。
pactl set-sink-volume 0 60% # set absolute
pactl set-sink-volume 0 +10% # set relative
pactl set-sink-mute 0 0 # unmute
特别是,pactl set-sink-mute 0 0 unmute 命令在我的计算机上有效,而amixer set Master unmute 则无效。
【讨论】:
pactl set-sink-volume 1 60% 之类的语句(这意味着您的设备是 1 号而不是 0 号) 但是,我的设备从未超过 1 号。
我的 ~/bin 中有一个不错的 vol 脚本来帮助我解决问题...
#!/bin/sh
export XDIALOG_NO_GMSGS=1
case ${1} in
+|-) VOL=( $(amixer set Master 10dB${1} |tail -1|tr -d "[]") )
Xdialog --no-buttons --title "Vol" --infobox ${VOL[3]} 50x30+32+32 ;;
*[0-9]) VOL=( $(amixer set Master "${1}%" |tail -1|tr -d "[]") )
Xdialog --no-buttons --title "Vol" --infobox ${VOL[3]} 50x30+32+32 ;;
*) printf "Usage: vol [+]|[-]|[0-100]\n" >&2 ;;
esac
如果你没有安装 Xdialog,一个简单的 echo ${VOL[3]} 会给你一些 alsamixer 反馈。
【讨论】: