zoukankan      html  css  js  c++  java
  • 都能看懂的嵌入式linux/android alsa_aplay alsa_amixer命令行用法

    前几天在嵌入式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

    不同的系统可以稍有不同,比如有的系统就叫aplayamixer .....

    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

  • 相关阅读:
    【leetcode】1630. Arithmetic Subarrays
    【leetcode】1629. Slowest Key
    【leetcode】1624. Largest Substring Between Two Equal Characters
    【leetcode】1620. Coordinate With Maximum Network Quality
    【leetcode】1619. Mean of Array After Removing Some Elements
    【leetcode】1609. Even Odd Tree
    【leetcode】1608. Special Array With X Elements Greater Than or Equal X
    【leetcode】1603. Design Parking System
    【leetcode】1598. Crawler Log Folder
    Java基础加强总结(三)——代理(Proxy)Java实现Ip代理池
  • 原文地址:https://www.cnblogs.com/Ph-one/p/8777314.html
Copyright © 2011-2022 走看看