android wear录音,android 使用AudioRecord录音音频文件pcm 转amr

我是在做手表开发的时候接触到音频文件的转码问题,大家都知道在手机上使用录音功能可以直接使用MediaRecord这个类,可以直接将录制内容输出为amr格式,但是在手表端(android wear)是无法使用MediaRecord这个类的,那么要想完成手表端的录音功能就必须使用AudioRecord这个类,而AudioRecord录制输出为pcm流(原声音频流,无损,无压缩,音质好,但文件太大),如果单纯的是手表端与手机端通信,借助于蓝牙连接的两端传输一个相对较大的 文件也没有什么问题,但是我们做的应用肯定是要和服务器打交道的,这时就需要传输的数据尽可能的小,这就迫使我去研究pcm压缩,查询了解后还是pcm转amr比较合适,压缩后是录音源文件大小的十分之一,而且手机端MediaRecord与MediaPlayer这两个类分别支持amr格式的输入与播放。

通过网上查询大部分给出的转化流程是:

通过android录音的pcm流写成pcm文件,然后加入wav头转化为可以播放的wav文件,在利用android 自动的lib_mediajni.so库转wav文件为amr文件,使得文件缩小到原来的十分之一的大小。

看到网上给出这么肯定的回答,我抱着99%的希望去完成转换,得到的结果是转换成功,文件也变小了,可是播放出来的却是杂音,没有听到录音内容。。。。。。。相信大家也有遇到同样问题。。。。(因本人不懂C,网上看到很多C实现的方法,我也只能对着它内流满面)

下面是我的实现的方法:

其实就是网上给出的那个流程:

通过android录音的pcm流写成pcm文件,然后加入wav头转化为可以播放的wav文件,在利用android 自动的lib_mediajni.so库转wav文件为amr文件。

唯一不同的是,pcm转wav时直接使用java提供的添加wav头的方法,需要使用一个soundtouch项目,调用他写的so库将pcm转为wav格式,然后再使用AmrInputStream将wav转amr。

下面链接是soundtouch项目,因为是一个变声项目,需要下载后将其中的变声部分代码注释掉,提取转wav格式部分代码就可以了

http://pan.baidu.com/s/1pJPxJJH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值