Android amr语音编解码解惑

关于android中的语音压缩编码,今天算是好好的研究了一下,有了小小的心得:

首先关于采集到得声音源的格式是PCM-16bit的格式,什么是PCM格式,大家看下面的这篇文章:

http://blog.csdn.net/tkboy/archive/2009/12/19/5038947.aspx

PCM就是无压缩的声音源,PCM信号是由[1]、[0]等符号构成的数字信号,android设备采取的声音源也就是这种格式,我们也正是对这种格式进行的压缩编码。

编码库不是我自己写的,是用bambuser中提取出来的,测试发现,这个库还真是他妈的强大,强大到无以复加的地步,每次编码的时候是这样的:

read= mAudioRecorder.read(arrayOfByte1,0,320);
encodeLength = mAmrEncoder.encode(arrayOfByte1,0,read,arrayOfByte2,AmrEncoder.MR475);

为什么是320呢?

请教了一位做SIP的朋友,是这样说的:

每320个字节或他的倍数的字节打包一次

可能这个就是原因吧,但是其实我对这个还是不是很理解,然后我们技术总监是这样说的:

传统是MS的,语音帧的最小单位是20m,每20ms对应的数据就是320字节,当然这是对应16bit,8Khz.

怎么计算出来的,有高手的指点下.

好,给大家说下编码后的情况,加深大家对这方面的了解:

这320字节的PCM-16语音经过编码后,编程的长度就是13个字节,也就是amr nb的语音格式,如果我们要通过AudioTrack来播放的话,就得用AmrDecoder来进行解码,将这13个字节还原成为320字节的PCM来进行播放。

AMR目前来说效率是比较高的,压缩比为:320:13 ,320字节压缩成为13字节

GSM也可以考虑: 320:33,320字节给你压缩成33字节

暂时就知道这么多了,后面学到了新东东再补充


http://www.shouyanwang.org/thread-123-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值