博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android amr语音编解码解惑 【转http://blog.csdn.net/xyz_lmn/article/category/922246】
阅读量:5266 次
发布时间:2019-06-14

本文共 821 字,大约阅读时间需要 2 分钟。

 

 

关于android中的语音压缩编码,今天算是好好的研究了一下,有了小小的心得:
首先关于采集到得声音源的格式是PCM-16bit的格式,什么是PCM格式,大家看下面的这篇文章:
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字节

转载于:https://www.cnblogs.com/songtzu/archive/2013/03/01/2939401.html

你可能感兴趣的文章
PAT——1060. 爱丁顿数
查看>>
分布式技术追踪 2017年第二十期
查看>>
git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
查看>>
Linux环境变量永久设置方法(zsh)
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
脑袋卡在窗子里
查看>>
ruby 中文字符to_json后乱码(unicode)
查看>>
《大道至简》第六章读后感
查看>>
codeforce 597C-Subsequences(dp+树状数组)
查看>>
[android](学习笔记6)为应用程序添加对话框(1)
查看>>
windows下mongodb安装与使用
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
Python 环境傻瓜式搭建 :Anaconda概述
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF219D Choosing Capital for Treeland
查看>>
杂七杂八的小笔记本
查看>>