mengfanrong

前几天在嵌入式linux上用到alsa command,网上查的资料多不给力,仅仅有动手一点点查,最终能够用了,将这个用法告诉大家,以免大家少走弯路。

0.先查看系统支持哪几个alsa cmd:

   ll /system/bin/asla*

   经查,我的android4.4.2+linux3.10  的系统支持例如以下 alsa cmd

-rwxr-xr-x root     shell       68242 2014-10-08 05:18 alsa_amixer
-rwxr-xr-x root     shell       67639 2014-10-08 05:18 alsa_aplay
-rwxr-xr-x root     shell      130323 2014-10-08 05:18 alsa_ctl

不同的系统能够稍有不同,比方有的系统就叫aplay\amixer .....

1.怎样使用alsa_aplay:

alsa_aplay -h //看一下眼下支持哪些使用方法

-h, --help              help
    --version           print current version
-l, --list-devices      list all soundcards and digital audio devices
-L, --list-pcms         list device names
-D, --device=NAME       select PCM by name
-q, --quiet             quiet mode
-t, --file-type TYPE    file type (voc, wav, raw or au)
-c, --channels=#        channels
-f, --format=FORMAT     sample format (case insensitive)
-r, --rate=#            sample rate
-d, --duration=#        interrupt after # seconds
-M, --mmap              mmap stream
-N, --nonblock          nonblocking mode
-F, --period-time=#     distance between interrupts is # microseconds
-B, --buffer-time=#     buffer duration is # microseconds
    --period-size=#     distance between interrupts is # frames
    --buffer-size=#     buffer duration is # frames
-A, --avail-min=#       min available space for wakeup is # microseconds
-R, --start-delay=#     delay for automatic PCM start is # microseconds
                        (relative to buffer size if <= 0)
-T, --stop-delay=#      delay for automatic PCM stop is # microseconds from xrun
-v, --verbose           show PCM structure and setup (accumulative)
-V, --vumeter=TYPE      enable VU meter (TYPE: mono or stereo)
-I, --separate-channels one file for each channel
    --disable-resample  disable automatic rate resample
    --disable-channels  disable automatic channel conversions
    --disable-format    disable automatic format conversions
    --disable-softvol   disable software volume control (softvol)
    --test-position     test ring buffer position
    --test-coef=#        test coeficient for ring buffer position (default 8)
                        expression for validation is: coef * (buffer_size / 2)
    --test-nowait       do not wait for ring buffer - eats whole CPU
    --max-file-time=#   start another output file when the old file has recorded
                        for this many seconds
    --process-id-file   write the process ID here
    --use-strftime      apply the strftime facility to the output file name

 会有具体的help说明,这个就不说了,能够自己试。
alsa_aplay -l //列出系统有几个声卡(card 0/1/2....), 及每一个卡的一个设备(device 0/1/2....)

比方我的系统为:

**** List of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: IntelALSASSP [IntelALSASSP], device 0: BT_DEVICE [IntelALSASSP]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: IntelALSASSP [IntelALSASSP], device 2: BUILTIN_DEVICE [IntelALSASSP]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: cloverviewaudio [cloverview_audio], device 0: 4 []
  Subdevices: 2/2
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
card 2: cloverviewaudio [cloverview_audio], device 1: Voice rt5640-aif2-1 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: cloverviewaudio [cloverview_audio], device 3: BTSCO snd-soc-dummy-dai-3 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: cloverviewaudio [cloverview_audio], device 4: VOIP rt5640-aif2-4 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: cloverviewaudio [cloverview_audio], device 5: IFX_MODEM_MIXING snd-soc-dummy-dai-5 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: cloverviewaudio [cloverview_audio], device 6: virtual-stream rt5640-aif1-6 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: cloverviewaudio [cloverview_audio], device 7: CTP Probe snd-soc-dummy-dai-7 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0


因为我的codec 为alc5640,所以
从上面得知alc5640挂在card2上,所以以后我们当配置amixer 5640时就-c 2 就对了。

2. alsa_amixer的使用方法

alsa_amixer -h //一样的help,这里不列了。

用alc5640进行mixer控制的使用方法:

# alsa_amixer -c 2 controls

例如以下:

alsa_amixer -c 2 controls
numid=35,iface=MIXER,name=\'Headphone Switch\'
numid=20,iface=MIXER,name=\'Mono ADC Capture Volume\'
numid=122,iface=MIXER,name=\'Mono ADC L1 Mux\'
numid=123,iface=MIXER,name=\'Mono ADC L2 Mux\'
numid=114,iface=MIXER,name=\'Mono ADC MIXL ADC1 Switch\'
numid=115,iface=MIXER,name=\'Mono ADC MIXL ADC2 Switch\'
numid=112,iface=MIXER,name=\'Mono ADC MIXR ADC1 Switch\'
numid=113,iface=MIXER,name=\'Mono ADC MIXR ADC2 Switch\'
numid=121,iface=MIXER,name=\'Mono ADC R1 Mux\'
numid=120,iface=MIXER,name=\'Mono ADC R2 Mux\'
numid=93,iface=MIXER,name=\'Mono DAC MIXL DAC L1 Switch\'
numid=94,iface=MIXER,name=\'Mono DAC MIXL DAC L2 Switch\'
numid=95,iface=MIXER,name=\'Mono DAC MIXL DAC R2 Switch\'
numid=92,iface=MIXER,name=\'Mono DAC MIXR DAC L2 Switch\'
numid=90,iface=MIXER,name=\'Mono DAC MIXR DAC R1 Switch\'
numid=91,iface=MIXER,name=\'Mono DAC MIXR DAC R2 Switch\'
numid=11,iface=MIXER,name=\'Mono DAC Playback Volume\'
numid=44,iface=MIXER,name=\'Mono MIX BST1 Switch\'
numid=41,iface=MIXER,name=\'Mono MIX DAC L2 Switch\'
numid=40,iface=MIXER,name=\'Mono MIX DAC R2 Switch\'
numid=43,iface=MIXER,name=\'Mono MIX OUTVOL L Switch\'
numid=42,iface=MIXER,name=\'Mono MIX OUTVOL R Switch\'
numid=85,iface=MIXER,name=\'Mono dacr Mux\'
numid=8,iface=MIXER,name=\'Mono Playback Switch\'
numid=21,iface=MIXER,name=\'ADC Boost Gain\'
numid=24,iface=MIXER,name=\'ADC IF1 Data Switch\'
numid=26,iface=MIXER,name=\'ADC IF2 Data Switch\'
numid=18,iface=MIXER,name=\'ADC Capture Switch\'
numid=19,iface=MIXER,name=\'ADC Capture Volume\'
numid=22,iface=MIXER,name=\'Class D SPK Ratio Control\'
numid=25,iface=MIXER,name=\'DAC IF1 Data Switch\'
numid=27,iface=MIXER,name=\'DAC IF2 Data Switch\'
numid=103,iface=MIXER,name=\'DAC L2 Mux\'
numid=107,iface=MIXER,name=\'DAC MIXL INF1 Switch\'
numid=106,iface=MIXER,name=\'DAC MIXL Stereo ADC Switch\'
numid=105,iface=MIXER,name=\'DAC MIXR INF1 Switch\'
numid=104,iface=MIXER,name=\'DAC MIXR Stereo ADC Switch\'
numid=102,iface=MIXER,name=\'DAC R2 Mux\'
numid=10,iface=MIXER,name=\'DAC1 Playback Volume\'
numid=9,iface=MIXER,name=\'DAC2 Playback Switch\'
numid=108,iface=MIXER,name=\'DAI select\'
numid=88,iface=MIXER,name=\'DIG MIXL DAC L1 Switch\'
numid=89,iface=MIXER,name=\'DIG MIXL DAC L2 Switch\'
numid=86,iface=MIXER,name=\'DIG MIXR DAC R1 Switch\'
numid=87,iface=MIXER,name=\'DIG MIXR DAC R2 Switch\'
numid=23,iface=MIXER,name=\'DMIC Switch\'
numid=37,iface=MIXER,name=\'Ext Spk L Switch\'
numid=38,iface=MIXER,name=\'Ext Spk R Switch\'
numid=3,iface=MIXER,name=\'HP Playback Switch\'
numid=4,iface=MIXER,name=\'HP Playback Volume\'
numid=50,iface=MIXER,name=\'HPO MIX DAC1 Switch\'
numid=49,iface=MIXER,name=\'HPO MIX DAC2 Switch\'
numid=51,iface=MIXER,name=\'HPO MIX HPVOL Switch\'
numid=36,iface=MIXER,name=\'Headset Mic Switch\'
numid=111,iface=MIXER,name=\'IF2 ADC L Mux\'
numid=110,iface=MIXER,name=\'IF2 ADC R Mux\'
numid=17,iface=MIXER,name=\'IN Capture Volume\'
numid=13,iface=MIXER,name=\'IN1 Boost\'
numid=12,iface=MIXER,name=\'IN1 Mode Control\'
numid=15,iface=MIXER,name=\'IN2 Boost\'
numid=14,iface=MIXER,name=\'IN2 Mode Control\'
numid=39,iface=MIXER,name=\'Int Mic Switch\'
numid=45,iface=MIXER,name=\'LOUT MIX DAC L1 Switch\'
numid=46,iface=MIXER,name=\'LOUT MIX DAC R1 Switch\'
numid=47,iface=MIXER,name=\'LOUT MIX OUTVOL L Switch\'
numid=48,iface=MIXER,name=\'LOUT MIX OUTVOL R Switch\'
numid=29,iface=MIXER,name=\'LPE IHF mixer\'
numid=30,iface=MIXER,name=\'LPE headset mixer\'
numid=6,iface=MIXER,name=\'OUT Channel Switch\'
numid=69,iface=MIXER,name=\'OUT MIXL BST1 Switch\'
numid=68,iface=MIXER,name=\'OUT MIXL BST3 Switch\'
numid=74,iface=MIXER,name=\'OUT MIXL DAC L1 Switch\'
numid=73,iface=MIXER,name=\'OUT MIXL DAC L2 Switch\'
numid=72,iface=MIXER,name=\'OUT MIXL DAC R2 Switch\'
numid=70,iface=MIXER,name=\'OUT MIXL INL Switch\'
numid=71,iface=MIXER,name=\'OUT MIXL REC MIXL Switch\'
numid=62,iface=MIXER,name=\'OUT MIXR BST1 Switch\'
numid=61,iface=MIXER,name=\'OUT MIXR BST2 Switch\'
numid=60,iface=MIXER,name=\'OUT MIXR BST3 Switch\'
numid=65,iface=MIXER,name=\'OUT MIXR DAC L2 Switch\'
numid=67,iface=MIXER,name=\'OUT MIXR DAC R1 Switch\'
numid=66,iface=MIXER,name=\'OUT MIXR DAC R2 Switch\'
numid=63,iface=MIXER,name=\'OUT MIXR INR Switch\'
numid=64,iface=MIXER,name=\'OUT MIXR REC MIXR Switch\'
numid=5,iface=MIXER,name=\'OUT Playback Switch\'
numid=7,iface=MIXER,name=\'OUT Playback Volume\'
numid=138,iface=MIXER,name=\'RECMIXL BST1 Switch\'
numid=137,iface=MIXER,name=\'RECMIXL BST2 Switch\'
numid=136,iface=MIXER,name=\'RECMIXL BST3 Switch\'
numid=134,iface=MIXER,name=\'RECMIXL HPOL Switch\'
numid=135,iface=MIXER,name=\'RECMIXL INL Switch\'
numid=139,iface=MIXER,name=\'RECMIXL OUT MIXL Switch\'
numid=132,iface=MIXER,name=\'RECMIXR BST1 Switch\'
numid=131,iface=MIXER,name=\'RECMIXR BST2 Switch\'
numid=130,iface=MIXER,name=\'RECMIXR BST3 Switch\'
numid=128,iface=MIXER,name=\'RECMIXR HPOR Switch\'
numid=129,iface=MIXER,name=\'RECMIXR INR Switch\'
numid=133,iface=MIXER,name=\'RECMIXR OUT MIXR Switch\'
numid=28,iface=MIXER,name=\'Register Control\'
numid=109,iface=MIXER,name=\'SDI select\'
numid=82,iface=MIXER,name=\'SPK MIXL DAC L1 Switch\'
numid=83,iface=MIXER,name=\'SPK MIXL DAC L2 Switch\'
numid=81,iface=MIXER,name=\'SPK MIXL INL Switch\'
numid=84,iface=MIXER,name=\'SPK MIXL OUT MIXL Switch\'
numid=80,iface=MIXER,name=\'SPK MIXL REC MIXL Switch\'
numid=77,iface=MIXER,name=\'SPK MIXR DAC R1 Switch\'
numid=78,iface=MIXER,name=\'SPK MIXR DAC R2 Switch\'
numid=76,iface=MIXER,name=\'SPK MIXR INR Switch\'
numid=79,iface=MIXER,name=\'SPK MIXR OUT MIXR Switch\'
numid=75,iface=MIXER,name=\'SPK MIXR REC MIXR Switch\'
numid=59,iface=MIXER,name=\'SPOL MIX BST1 Switch\'
numid=56,iface=MIXER,name=\'SPOL MIX DAC L1 Switch\'
numid=55,iface=MIXER,name=\'SPOL MIX DAC R1 Switch\'
numid=58,iface=MIXER,name=\'SPOL MIX SPKVOL L Switch\'
numid=57,iface=MIXER,name=\'SPOL MIX SPKVOL R Switch\'
numid=54,iface=MIXER,name=\'SPOR MIX BST1 Switch\'
numid=52,iface=MIXER,name=\'SPOR MIX DAC R1 Switch\'
numid=53,iface=MIXER,name=\'SPOR MIX SPKVOL R Switch\'
numid=32,iface=MIXER,name=\'SSP BT Master Mode\'
numid=34,iface=MIXER,name=\'SSP Modem Master Mode\'
numid=33,iface=MIXER,name=\'SSP VOIP Master Mode\'
numid=31,iface=MIXER,name=\'SST Probe Byte Control\'
numid=16,iface=MIXER,name=\'Speaker Boost\'
numid=1,iface=MIXER,name=\'Speaker Playback Switch\'
numid=2,iface=MIXER,name=\'Speaker Playback Volume\'
numid=125,iface=MIXER,name=\'Stereo ADC L1 Mux\'
numid=127,iface=MIXER,name=\'Stereo ADC L2 Mux\'
numid=118,iface=MIXER,name=\'Stereo ADC MIXL ADC1 Switch\'
numid=119,iface=MIXER,name=\'Stereo ADC MIXL ADC2 Switch\'
numid=116,iface=MIXER,name=\'Stereo ADC MIXR ADC1 Switch\'
numid=117,iface=MIXER,name=\'Stereo ADC MIXR ADC2 Switch\'
numid=124,iface=MIXER,name=\'Stereo ADC R1 Mux\'
numid=126,iface=MIXER,name=\'Stereo ADC R2 Mux\'
numid=101,iface=MIXER,name=\'Stereo DAC MIXL ANC Switch\'
numid=99,iface=MIXER,name=\'Stereo DAC MIXL DAC L1 Switch\'
numid=100,iface=MIXER,name=\'Stereo DAC MIXL DAC L2 Switch\'
numid=98,iface=MIXER,name=\'Stereo DAC MIXR ANC Switch\'
numid=96,iface=MIXER,name=\'Stereo DAC MIXR DAC R1 Switch\'
numid=97,iface=MIXER,name=\'Stereo DAC MIXR DAC R2 Switch\'

alsa_amixer -c 2 cget numid=2 // 从card2 获得主喇叭当时的音量

alsa_amixer -c 2 cset numid=2 39 // 从card2设置主喇叭的音量=39
alsa_amixer -c 2 cset numid=2 100% // 从card2设置主喇叭的音量=39

分类:

技术点:

相关文章:

  • 2021-06-14
  • 2021-12-28
  • 2021-05-20
  • 2021-05-22
  • 2021-07-17
  • 2021-12-10
  • 2021-12-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-25
  • 2021-07-26
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
相关资源
相似解决方案