相关文章
Android 音视频开发(一) : 通过三种方式绘制图片
http://www.cnblogs.com/renhui/p/7456956.html
查阅/提炼的知识点
音频
● 利用AudioRecord录制的文件
那如何才能在播放器中播放我录制的内容呢?
答: 在文件的数据开头加入WAVE HEAD数据即可,也就是文件头。只有加上文件头部的数据,播放器 才能正确的知道里面的内容到底是什么,进而能够正常的解析并播放里面的内容。
● AudioTrack中Buffer分配和Frame的概念
在计算Buffer分配的大小的时候,我们经常用到的一个方法就是:getMinBufferSize。这个函数决定了应用层分配多大的数据Buffer。
AudioTrack.getMinBufferSize(8000,//每秒8K个采样点
AudioFormat.CHANNEL_CONFIGURATION_STEREO,//双声道
AudioFormat.ENCODING_PCM_16BIT);
从AudioTrack.getMinBufferSize开始追溯代码,可以发现在底层的代码中有一个很重要的概念:Frame(帧)。Frame是一个单位,用来描述数据量的多少。1单位的Frame等于1个采样点的字节数×声道数(比如PCM16,双声道的1个Frame等于2×2=4字节)。1个采样点只针对一个声道,而实际上可能会有一或多个声道。由于不能用一个独立的单位来表示全部声道一次采样的数据量,也就引出了Frame的概念。Frame的大小,就是一个采样点的字节数×声道数。另外,在目前的声卡驱动程序中,其内部缓冲区也是采用Frame作为单位来分配和管理的。
● AudioTrack&MediaPlayer&SoundPool
http://blog.csdn.net/jwzhangjie/article/details/8843772
● 预览Camera数据
http://www.cnblogs.com/renhui/p/7472778.html
● 音视频分离&混合
android MediaCodec 音频编解码的实现——转码
引申 Android FFmpeg和MediaCodec对比分析
http://www.jianshu.com/p/41957301f4a3
分离: android MediaCodec 音频编解码的实现——转码
http://www.cnblogs.com/Sharley/p/5964490.html
AAC ADTS格式分析
http://blog.csdn.net/andyhuabing/article/details/40983423
混合: Android音视频处理之MediaMuxer
http://www.jianshu.com/p/aeadf260258a
Android中直播视频技术探究之—基础核心类ByteBuffer解析
https://www.2cto.com/kf/201607/526425.html
深入理解ByteBuffer
http://blog.csdn.net/workformywork/article/details/26699345
编解码器
编解码器的状态
编码器流控
码率控制模式有三种:
● CQ 表示完全不控制码率,尽最大可能保证图像质量;
● CBR 表示编码器会尽量把输出码率控制为设定值,即我们前面提到的“不为所动”;
● VBR 表示编码器会根据图像内容的复杂度(实际上是帧间变化量的大小)来动态调整输出码率,图像复杂则码率高,图像简单则码率低;