4.Android音频驱动(底层1)


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开发板上,播放与录制音频都能成功。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容