关于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字节



/**
* @author 张兴业
* 邮箱:xy-zhang#163.com
* android开发进阶群:278401545
*
*/

更多相关文章

  1. android wav 去头信息转化成pcm 格式数据
  2. android EditText 设置输入的文字的格式方式
  3. android下通过xstream解析xml格式信息
  4. Android 取出 图片以字节形式存放到数据库的数据,并将图片显示
  5. 【Android应用开发】分享一个录制 Android 屏幕 gif 格式的小技
  6. Eclipse环境下格式化Android的代码风格

随机推荐

  1. 给XML文档添加新 ”records”
  2. XML 增、删、改
  3. vbs类天生xml文件
  4. XML指南——XML 确认
  5. Xml SelectNodes 与 XPath
  6. XML 树结构
  7. XML指南——XML CDATA
  8. FusionCharts 3D双柱状图
  9. 四种XML解析方式详解
  10. FusionCharts 2D柱状图和折线图的组合图