1.介绍
Android使用的音频驱动库是tinyalsa,所以后面的说明都是基于驱动程序与tinyalsa的。
2.编译
编译出tinyalsa应用程序
$ mmm external/tinyalsa/
$ cp out/target/product/tiny4412/symbols/system/bin/tiny* /mnt/hgfs/Desktop/
生成的文件在out/target/product/tiny4412/symbols/system/bin/目录下。
然后可以将生成的文件拷贝到SD卡中:
$ ls /mnt/media_rw/sd_external/images/
Android
FriendlyARM.ini
Linux
Superboot4412.bin
UbuntuCore
tinycap
tinymix
tinypcminfo
tinyplay
在Android系统中,如果出现:
mkdir failed for share, Read-only file system
解决办法为:
$ su
$ mount -o remount /system
之后,就可以将文件拷贝到Android中了。
$ mkdir /share
$ cp /mnt/media_rw/sd_external/images/tiny* /share
$ cd /share
$ ./tinyplay
Usage: ./tinyplay file.wav [-D card] [-d device] [-p period_size] [-n n_periods]
要注意,使用tinyplay的时候,最好查看一下要播放的文件的格式,我是用过cooledit制作音频文件,发现是不符合tinyplay格式要求的。
需要注意的是如下内容:
按照红色划分,主要是根据分析tinyplay.c源码分析出来的。
可以看到数据组织格式为:
数据 | 意义 | 备注 |
---|---|---|
0x0001 | audio_format | 音频格式 |
0x0002 | num_channels | 左右2个声道 |
0x0000ac44 | sample_rate | 采样速率为44100 |
0x0002b110 | byte_rate | 176400 |
0x0004 | block_align | 4 |
0x0010 | bits_per_sample | 16bit |
tinyplay是支持16bits per sample,2声道。我在cooledit上报错主要原因是这里不正确。
播放、录制音频
$ ./tinyplay 1.wav
Playing sample: 2 ch, 44100 hz, 16 bit
$ ./tinycap 2.wav
Capturing sample: 2 ch, 44100 hz, 16 bit
^CCaptured 241664 frames
经过验证,在Tiny4412开发板上,播放与录制音频都能成功。