Andorid音频工具tinymix,tinyplay,tinycap使用

原址

由于ALSA架构太过于庞大,对于嵌入式设备而言很多功能用不到,且会增加功耗,所以Android采用了精简后的tinyalsa,tinyalsa相关的底层调试工具常用的有tinymix,tinyplay,tinycap,下面分别介绍他们的使用方法。

1.tinymix
tinymix可以查看系统的音频控件,可直接执行tinymix进行查看。tinymix更多的作用的是用来手动设置控件的值,控件可通过tinymix查看,或者通过mixer_paths.xml进行查看。下面以手动设置speaker相关控件为例进行说明tinymix的使用方法:

mixer_paths.xml文件中speaker相关控件如下:

    <path name="speaker">
        <ctl name="RX3 MIX1 INP1" value="RX1" />
        <ctl name="LINE_OUT" value="Switch" />
        <ctl name="SPK" value="Switch" />          
    </path>
下面以手动设置speaker相关控件为例进行说明tinymix的使用方法,如下,第一个参数为控件名,第二个参数为控件值

tinymix "RX3 MIX1 INP1" "RX1"
tinymix "LINE_OUT" "Switch"
tinymix "SPK" "Switch"
tinymix加控件名可以查看控件的值,如想查看"LINE_OUT"的值,可执行tinymix "LINE_OUT"

2.tinyplay
可以使用tinyplay直接进行播放wav格式文件,在播放之前需要先使用tinymix进行相关控件的设置,下面以speaker为例进行说明,注意最后一行需要加上,代表打开I2S的播放控件。

tinymix "RX3 MIX1 INP1" "RX1"
tinymix "LINE_OUT" "Switch"
tinymix "SPK" "Switch"
    
tinymix "PRI_MI2S_RX Audio Mixer MultiMedia5" "1"
设置好上面控件后,执行tinypaly xxx.wav即可进行音频的播放

3.tinycap
tinycap是用来录音的,使用之前也需要先设置录音相关的控件,以主mix为例进行过说明,注意最后一行是打开I2S的录音控件

tinymix "ADC1 Volume" "6"
tinymix "DEC1 MUX" "ADC1"
tinymix "IIR1 INP1 MUX" "DEC1"
 
tinymix "MultiMedia1 Mixer TERT_MI2S_TX" "1"
设置好上面控件后,执行tinycap xxx.wav即可以将音频录制到xxx.wav中,Ctrl+C停止录音。

注意,最好使用linux进行测试,使用windows的话,可能没法正常录音。

相关概念:
Sample:样本长度,音频数据最基本的单位,常见的有8位和16位。
Channel:声道数,分为单声道mono和立体声stereo。
Frame:帧,构成一个完整的声音单元,Frame = Sample * channel。
Rate:又称Sample rate,采样率,即每秒的采样次数,针对帧而言。
Interleaved:交错模式,一种音频数据的记录方式,在交错模式下,数据以连续桢的形式存放,即首先记录完桢1的左声道样本和右声道样本(假设为立体声),再开始桢2的记录。而在非交错模式下,首先记录的是一个周期内所有桢的左声道样本,再记录右声道样本,数据是以连续通道的方式存储。多数情况下使用交错模式。
Period size:周期,每次硬件中断处理音频数据的帧数,对于音频设备的数据读写,以此为单位。
Buffer size:数据缓冲区大小,这里特指runtime的buffer size,而不是snd_pcm_hardware定义的buffer_bytes_max。一般来说Buffer size =period_size * period_count,period_count相当于处理完一个buffer数据所需的硬件中断次数。

猜你喜欢

转载自blog.csdn.net/u010164190/article/details/85771162