最近接触到amixer,大概明白了其意思和具体用法,简述如下。

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

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

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

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

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

# amixer
--help

Usage: amixer <options> [command]

Available options:

-h,--help       this help

-c,--card N     select the card

-D,--device N   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 also inactive controls

-a,--abstract L select abstraction level (none or basic)

-s,--stdin      Read and execute commands from stdin sequentially

Available commands:

scontrols       show all mixer simple controls

scontents       show contents of all mixer simple controls (default command)

sset sID P      set contents for one mixer simple control

sget sID        get contents for one mixer simple control

controls        show all controls for given card

contents        show contents of all controls for given card

cset cID P      set control contents for one control

cget cID        get control contents for one control

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

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

amixer contents

查看,比如:

# amixer
controls

numid=3,iface=MIXER,name='Master Mode Switch'

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='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

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='PCM Volume'

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='PCM Volume' 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='Mic Supply Switch' Off

numid=12,iface=MIXER,name='Mic Supply Switch'

; type=ENUMERATED,access=rw------,values=1,items=2

; Item #0 'On'

; Item #1 'Off'

: values=1

总结一下用法,就是:

amixer cget    controls中所输出的某个参数

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

【提示】

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

controls        show all controls for given card

contents        show contents of all controls for given card

cset cID P      set control contents for one control

cget cID        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 sID P      set contents for one mixer simple control

sget sID        get contents for one mixer simple control

也是同样做法,比如:

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

# amixer
scontrols

Simple mixer control 'Master',0

Simple mixer control 'Master Mode',0

Simple mixer control 'Master Mux',0

Simple mixer control 'Master Quality',0

。。。

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

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

# amixer
sget 'Microphone Input',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

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

# amixer
sget 'Master Mux',0

Simple mixer control 'Master Mux',0

Capabilities: enum

Items: 'Sum' 'DAC' 'Line' 'Mic'

Item0: 'DAC'

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

# amixer
sset 'Master Mux',0 Line

Simple mixer control 'Master Mux',0

Capabilities: enum

Items: 'Sum' 'DAC' 'Line' 'Mic'

Item0: 'Line'

简述amixer及其用法的更多相关文章

  1. 给iOS开发新手送点福利,简述UIDatePicker的用法

    1.Locale 设置DatePicker的地区,即设置DatePicker显示的语言. 1.跟踪所有可用的地区,取出想要的地区 NSLog(@"%@", [NSLocale av ...

  2. 简述UIDatePicker的用法

    1.Locale 设置DatePicker的地区,即设置DatePicker显示的语言. 1.跟踪所有可用的地区,取出想要的地区 NSLog(@"%@", [NSLocale av ...

  3. ALSA音频工具amixer,aplay,arecord

    ALSA音频工具编译安装 ========================================================================1.官网http://www. ...

  4. ios面试技巧

    一.软件开发流程? 软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法.软件的总体结构设计和模块设计.编程和调试.程序联调和测试以及编写.提交程序. 1 相关系统分析员和用户初步了解需 ...

  5. Oracle百问百答(二)

    Oracle百问百答(二) 11. nvl函数有什么用? NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值,否则 ...

  6. JS中的this的应用总结

    简述this的用法 "this是由被调用的方式确定"这个事实,使得this可以被改变,从而为函数增加了动态性,可变性,使得变成更加灵活.目前因为工作经验有限,暂时总结一下五种情况下 ...

  7. 再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结

    这篇是对angularJS的一些疑点回顾,是对目前angularJS开发的各种常见问题的整理汇总.如果对文中的题目全部了然于胸,觉得对整个angular框架应该掌握的七七八八了.希望志同道合的通知补充 ...

  8. JavaSE习题 继承接口和泛型

    问答题: 1.子类在什么情况下可以继承父类友好成员? 答:在同一个包内 2.子类通过怎样的方法可以隐藏继承的成员变量? 答:声明一个与父类相同变量名的成员变量 3.子类重写继承的方法原则是什么? 答: ...

  9. angular常见问题总结

    本文引自:https://www.cnblogs.com/zhoulujun/p/8881414.html 这篇是对angularJS的一些疑点回顾,是对目前angularJS开发的各种常见问题的整理 ...

随机推荐

  1. 如何删除 Windows 10 系统生成的 WindowsApps 文件夹

    如果曾经修改过 Windows 10 应用安装路径到非系统盘,那么那个盘下就会生成一些文件夹.如果以后重装了系统或者应用删除了,挪位置了,那些文件夹依然在那里——删不掉! 大家都知道这是权限问题,然而 ...

  2. springboot注册bean失败

    启动的主类应该放在和其他包一样的目录,不能放在一个目录里面

  3. Spark的CombineByKey

    combineBykey关键是要明白里面的三个函数: 1. 当某个key第一次出现的时候,走的是第一个函数(createCombin):A function that creates a combin ...

  4. ecmall 挂件开发实例一

     (参考网上相关文章,进行测试点评,下述方法测试成功) 1:在页面上添加要展示的页面模块 <div class="left" area="bottom_foot&q ...

  5. GNU Radio安装教程: Ubuntu14.04 + uhd3.10.0 + gnuradio3.7.10.1

    1. 更新和安装依赖项 在编译安装uhd和gnuradio之前,确保已安装所需依赖项.Ubuntu系统运行: sudo apt-get update 安装UHD和GNURadio所需依赖项: On U ...

  6. [转]nginx虚拟目录(alias与root的区别)

    今天配置awstats,awstats创建出的文件目录在/home/awstats下,在nginx中加入配置后狂报404,发现还是忽略了root和alias的区别,特将修改配置记录如下: 1.失败:s ...

  7. 批量修改文件名的bash脚本

    #!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do # echo "sox $line --cha ...

  8. JVM内存管理之GC简介

    为何要了解GC策略与原理?        原因在上一章其实已经有所触及,就是因为在平时的工作和研究当中,不可避免的会遇到内存溢出与内存泄露的问题.如果对GC策略与原理不了解的情况下碰到了前面所说的问题 ...

  9. demo 记录 通用方法什么的到这里抄一下

    function killerrors() { return true; } window.onerror = killerrors; //检查浏览器类型 function checkBrowser( ...

  10. Firewalld中的whitelist并不是规则白名单

    原文地址:http://www.excelib.com/article/292/show whitelist的含义 白名单跟防火墙结合在一起大家很容易将其理解为规则白名单,不过在Firewalld中w ...