amixer命令用于设置系统音量

2023-10-15 04:40

本文主要是介绍amixer命令用于设置系统音量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

amixer命令用于设置系统音量

   该句为-c选择0的声卡(貌似),PCMvolume设置为增加60*2=120(value值变为加上120),60dB-就是减小60*2=120,如果是如下:

               amixer -c 0 set PCM 60db+

   则为把value设置为60.

  在FX1的case中,value的值如果loopback要过的话,必须得value的值在一定范围80-127以内,不能超过127即爆声(我是这样记的)。

   在FX1的case中,runin阶段有设置系统声卡音量,使音量增大,而这句影响到final阶段的loopback测试,使得播放和录音的两个音频不一样,check_wav时就fail了,但是如果没有amixer命令,不会出错。

 

使用到命令:

     amixer controls(找到一个关于PCM的控制项PCM Playback Volume)

     amixer cget numid=1,iface=MAXER,name=‘PCM PlaybackVolume’(出现PCM的value的数据)

     amixer -c 0 set PCM 60dB+(将value值在原基础上加上60*2=120)

 Q:但是FX1中有一些批次产品是reboot之后会恢复default的value值,有一些则不会。

 

 

amixer命令:

   alsamixer是Linux音频架构ALSA中的Alsa工具的其中一个,用于配置音频的各个参数。

  alsamixer是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个switch(开关)等等操作。

  amixer,是alsamixer的文本模式,即命令行模式,需要用amixer命令的形式去配置你的声卡的各个选项。

对于amixer的使用,你首先需要搞懂你要设置的参数是哪些,然后才可能去了解,如何去配置对应的值,整体来说,相对alsamixer来说,是有点繁琐,下面简要介绍其具体用法:

 1.先看看amixer支持哪些命令,大概有哪些功能

  #amixer--help

 Usage: amixer [command]

 Availableoptions:
 -h,--help      this help
  -c,--cardN    select the card
  -D,--deviceN   select the device, default'default'
 -d,--debug     debug mode
 -n,--nocheck   do not perform range checking
 -v,--version   print version of this program
 -q,--quiet     be quiet
 -i,--inactive   show alsoinactive controls
  -a,--abstract L select abstraction level (noneor basic)
 -s,--stdin     Read and execute commands from stdin sequentially

   Availablecommands:
   scontrols      show all mixer simple controls
   scontents      show contents of all mixer simple controls (default command)
    sset sIDP     set contents for one mixer simple control
    sgetsID       get contents for one mixer simple control
   controls       show all controls for given card
   contents       show contents of all controls for given card
    cset cIDP     set control contents for one control
    cgetcID       get control contents for one control

2.再看看当前你的音频系统(不同的音频驱动对应不同的内容和操作接口)提供了那些供你使用的接口去操作

关于驱动里面已经提供了多少接口可以去操作,可以用命令:

amixercontents

查看,比如:

# amixercontrols
numid=3,iface=MIXER,name='Master ModeSwitch'
numid=29,iface=MIXER,name='Master Mux'
numid=4,iface=MIXER,name='Master Quality Switch'
numid=2,iface=MIXER,name='Master Switch'
numid=1,iface=MIXER,name='Master Volume'
numid=7,iface=MIXER,name='PCM Mode Switch'
numid=6,iface=MIXER,name='PCM Switch'
numid=5,iface=MIXER,name='PCM Volume'
numid=21,iface=MIXER,name='Line Input Switch'
numid=16,iface=MIXER,name='Line Mode Switch'
numid=27,iface=MIXER,name='Line Mux'
。。。。。
numid=9,iface=MIXER,name='Mic Switch'
numid=8,iface=MIXER,name='Mic Volume'
numid=19,iface=MIXER,name='ADC Mode Switch'
numid=28,iface=MIXER,name='ADC Mux'
。。。。。。。。

去查看,当然你的Linux内核支持哪些配置参数,如上,一共有20多个参数可供你配置。

而对于所有的当然的配置的值,可以通过这个查看:

# amixer contents
numid=3,iface=MIXER,name='Master Mode Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Common Buffer Off'
; Item #1 'Common Buffer On'
: values=0
。。。。。。。。。。

numid=5,iface=MIXER,name='PCMVolume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=27,step=0
: values=27,27
| dBscale-min=-40.50dB,step=1.50dB,mute=0
numid=24,iface=MIXER,name='Mixer ADC Mix Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=26,iface=MIXER,name='Mixer DAC Mix Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=25,iface=MIXER,name='Mixer Line Mix Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=23,iface=MIXER,name='Mixer Mic Mix Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on

3.搞懂如何去设置某个参数

总结起来就是,先要用get系列命令去看懂有哪些接口,然后再去用set系列的命令,去设置对应你所要设置的值。

想要针对某项设置,比如想要设置上面的的主音量,master volume,即controls中显示的:

numid=5,iface=MIXER,name='PCM Volume'
那么,可以先看看当前的值:

# amixer cget numid=5,iface=MIXER,name='PCMVolume'
numid=5,iface=MIXER,name='PCM Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=27,step=0
: values=27,27
| dBscale-min=-40.50dB,step=1.50dB,mute=0

显示的是最大的27,假设想要设置为25,那么就用cset去设置:

# amixer cset numid=5,iface=MIXER,name='PCMVolume' 25
numid=5,iface=MIXER,name='PCM Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=27,step=0
: values=25,25
| dBscale-min=-40.50dB,step=1.50dB,mute=0

再比如,去将'Mic Supply 的switch关闭:

# amixer cset numid=12,iface=MIXER,name='MicSupply Switch'Off
numid=12,iface=MIXER,name='MicSupply Switch'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'On'
; Item #1 'Off'
: values=1

总结一下用法,就是:

amixercget   controls中所输出的某个参数

amixercset   controls中所输出的某个参数     具体的值(比如,0,1,On,Off等)

【提示】

同上面介绍的的cget/cset系列命令:

controls       show all controls for given card
contents       show contents of all controls for given card
cset cIDP     set control contents for one control
cgetcID       get control contents for one control

类似的,还有另外一套sget/sset系列的命令:

scontrols      show all mixer simple controls
scontents      show contents of all mixer simple controls (default command)
sset sIDP     set contents for one mixer simple control
sgetsID       get contents for one mixer simple control

也是同样做法,比如:

通过查看当然有哪些选择可以控制:

# amixer scontrols
Simple mixercontrol 'Master',0
Simple mixer control 'Master Mode',0
Simple mixer control 'Master Mux',0
Simple mixer control 'Master Quality',0
。。。

同理,amixerscontents,可以查看当前所有的值,具体就不在这列举了。

另外,去查看或者配置用sget,比如:

# amixer sget 'MicrophoneInput',0
Simple mixer control 'Microphone Input',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]

如果想要修改对应设置,用amixer sset ,具体用法是:

amixer sset sID(控制字符串)P(支持的某个值)

其中sID,就是上面的Simple mixer control后面的那个字符串,比如'Master Mux',0

而对其设置就是,先看看其提供了哪些供你设置的值:

# amixersget 'Master Mux',0
Simple mixercontrol 'Master Mux',0
Capabilities: enum
Items: 'Sum' 'DAC' 'Line' 'Mic'
Item0: 'DAC'

然后比如要设置成Line的,就可以这样:

# amixer sset 'Master Mux',0Line
Simple mixer control'Master Mux',0
Capabilities: enum
Items: 'Sum' 'DAC' 'Line' 'Mic'
Item0: 'Line'

这篇关于amixer命令用于设置系统音量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/215369

相关文章

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网