声音设备返回的input buffer总是320个字节
来源:互联网 发布:长沙最新cnc编程招聘 编辑:程序博客网 时间:2024/06/11 05:51
首先简单介绍下,G711的压缩比,其实比较低2:1的压缩,一般采样的数据都是一次性的读取320字节,至于为什么是320呢?
原因是这样的:
语音帧的最小单位是20ms,也就是在8KHZ 16bit的基础上,一帧语音可以播放20ms,这20ms对应的长度就是320字节,按帧的概念来说,就是最少必须编码一帧的数据,也就是达到最小的语音播放单位.
320个字节是这么算出来的:
8Khz=8000个采样/秒 8采样/毫秒
那么20毫秒就是160个采样,又因为每个采样16bit=2byte,所以160个采样就是320字节。
上面的基础理论明白了不?
因此才代码中我所采用的基本都是一个语音帧的数据,也就是8KHZ,16BIT,320字节,几乎所有的压缩比都是以320为基础点的.
采集语音是采用AudioRecord来进行的:
int samp_rate = 8000 ;
int min = AudioRecord.getMinBufferSize(samp_rate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);//一个采用占据多少bit,目前设备支持16bit/8bit 2中情况
Log.e(TAG, "min buffer size:"+min);
AudioRecord record = null;
record = new AudioRecord(
MediaRecorder.AudioSource.MIC,//the recording source
samp_rate, //采样频率,一般为8000hz/s
AudioFormat.CHANNEL_CONFIGURATION_MONO, //声音采集通道
AudioFormat.ENCODING_PCM_16BIT,
min);
播放声音采用的是:
AudioTrack:
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
int samp_rate = 8000 ;
int maxjitter = AudioTrack.getMinBufferSize(samp_rate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioTrack track = new AudioTrack(AudioManager.STREAM_VOICE_CALL,samp_rate,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
maxjitter, AudioTrack.MODE_STREAM);
track.play();
原理几乎一样:
本DEMO是边录音边播放的,中间并没有传说中的杂音.
- 声音设备返回的input buffer总是320个字节
- struts2两个input方法的action,出错后总是返回到Input页面的解决方法
- struts2 总是返回input视图解决办法
- struts2表单提交时总是返回input
- 整合Spring后,调用Action总是返回Input解决方案
- 字符设备 和 input 设备--input设备的注册
- 总是有个开始的
- input设备的属性设置
- 引起stat总是返回-1的原因
- getBestProvider总是返回null问题的解决之道
- getSupportActionBar() 函数总是返回 null 的解决
- GUI_MEMDEV_Create总是返回0的原因
- libnet_init()总是返回NULL的问题
- Linux操作系统的声音设备编程实例
- pjsip启动找不到声音设备的解决方法
- 返回字节的写操作
- 加班到十点,没有时间,弄个输出套接字接收和返回的Buffer大小的程序
- mysql的日期字段和插入日期/返回最右边5个字节right
- mp4文件格式解析(一)
- wince6.0驱动开发
- libjpeg的交叉编译
- mp4文件格式解析(二)
- 嵌套模版类
- 声音设备返回的input buffer总是320个字节
- 九度OJ 题目1041:Simple Sorting
- mp4文件格式解析(三)
- iText生成PDF入门
- mp4文件格式解析(四)
- Dos文件到Unix文件转换
- 各种数据类型的取值范围
- 入网与入库的学习
- 云计算的三种服务模式:SaaS/PaaS/IaaS