关于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
分享到:
相关推荐
AMR语音编解码的研究与实现
讲解了wcdma中amr语音编解码器的设计与实现技术.
TD-LTE AMR 语音采集编解码收发程序
GSM AMR语音编解码源码,提供了完整的decoding和encoding程序
AMR语音编解码程序,官网上下的是编解码分开的。这里做了修改合到一起。
当前最新C代码,里面包含了测试代码,可以直接VS编译DLL,PC版通过,移动版本未测试
opencore-amr-android, android中的opencore amr编解码器 opencore-amr-android一种带有解释功能的opencore amr编解码器及其封装amr音频文件的。中文文档请移步 README_CN QQ部落帮助: 453503476背景opencore 是...
可以运行在Linux系统下的AMR编解码源程序
3gpp音频协议 AMR编码,解码的C源代码
3G-AMR编解码协议分析的信源编码原理与协议帧结构分析
这是3GPP最新版的amr编解码的C源代码,支持多个平台(Linux,win,sun),对于学习amr编解码原理有很大帮助。
3gpp官方的amr编解码C源码和协议 可用于嵌入式微信语音聊天等,软件编解码
3GPP官网发布的AMR编解码程序的C代码
amr语音播放资源集合
Adaptive Multi-Rate 目前最流行的低速率音频编码器,手机上都用它
一个精彩的amr解码实现介绍.需要的可以看看
AMR的编解码是基于“3GPP AMR Floating-point Speech Codec”
第三代移动通讯系统中的AMR语音编解码方式和原理
amr编码解码库,还有实例,绝对好使,好东西具有收藏价值
amr编解码C代码,附有3GPP格式说明方档,并有相关应用说明