Python程序需要调用shell命令设置系统音量:
amixer set Master 30% #音量设定为30%
在一台ubuntu上成功了。但是在另一台机器上却报错:
amixer: Unable to find simple control 'Master',0
找了一圈,发现是 默认声卡 不对。只要修改下默认声卡就可以成功执行上面那条命令了。
运行 alsamixer 显示的信息如下:
没有可以调节音量的选项。
F6 选择另一张声卡:
这就正常了。
所以讲默认声卡设置成刚选择的这张就行了。
先看下声卡相关的信息:
bwhite@os:~$ amixer scontrols
Simple mixer control 'IEC958',0
Simple mixer control 'IEC958',1
Simple mixer control 'IEC958',2
bwhite@os:~$
bwhite@os:~$ amixer -c 1 scontrols
Simple mixer control 'Master',0
Simple mixer control 'Headphone',0
Simple mixer control 'Speaker',0
Simple mixer control 'PCM',0
Simple mixer control 'Capture',0
Simple mixer control 'Auto-Mute Mode',0
Simple mixer control 'Headset Mic',0
Simple mixer control 'Headset Mic Boost',0
Simple mixer control 'Internal Mic',0
Simple mixer control 'Internal Mic Boost',0
Simple mixer control 'Loopback Mixing',0
bwhite@os:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC286 Analog [ALC286 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
bwhite@os:~$
所以,在aplay -l 里面选择声卡1,设备ID为0的声卡。
把下列配置添加到系统级别的 /etc/asound.conf
或用户级别的 ~/.asoundrc 文件。
如果文件不存在,可以手动创建。
其中的各个ID,请根据实际情况调整:
defaults.pcm.card 1
defaults.pcm.device 0
defaults.ctl.card 1
“pcm”选项决定用来播放音频的设备,而“ctl”选项决定那个声卡能够由控制工具(如 alsamixer)使用。
再运行一开始会报错的命令就没有成功了。
采集声音:
要修改采集声音的话,修改 Capture.
amixer
按 F4 就可以看到相关界面
amixer set Capture 10%
如果要修改制定声卡的相关数据,使用 -c
修改第一块声卡设备的数据
amixer -c 1 Capture 100%
显示声卡设备相关数据:
arecord -l
arecord -L
aplay -l
备注:
amixer set Master 10%+ #增加10%音量
amixer set Master 10%- #降低10%音量
amixer set Master 30% #音量设定为30%
参考链接:
Advanced Linux Sound Architecture (简体中文)