AAC音频码流解析
来源:互联网 发布:千峰软件测试 编辑:程序博客网 时间:2024/06/03 21:37
转自http://blog.csdn.net/leixiaohua1020/article/details/50535042?locationNum=3&fps=1
获取ADTS帧,根据buf的大小比7字节还小,返回错误-1.先判断同步字(两个字节)是否为前12位全为1.帧的大小(包括13位)包含帧头部。如果分配的buffer大小小于帧的大小返回1,如果分配的buffer大小大于帧的大小,把buffer里面大小为Size的内容拷贝到data.并把帧的大小值赋给data_size.
##############################
buffer:存储的是音频文件
buf_size:读取到的音频文件的大小
data:存储帧的实际数据
data_size:实际帧的大小
###############################
解析acc格式的音频文件,先打开音频文件,分配大小为1024*1024字节的buffer大小,大小为1024*5字节的帧区大小。
循环读取文件,从文件中一帧一帧地读取数据。这里offset为0,也就是把音频文件拷贝到分配的1024*1024的buffer,并把读取到的字节数赋给data_size,读取到并定义指针input_data指向这个分配的空间。
然后从input_data指针指向的内容中获取一帧数据存到accframe中,而size存储的是帧数据的大小。每获取一帧数据,偏移值就会增加。如果ret为-1表示得到的帧小于7字节,如果为1表示读取到的文件大小小于一帧的大小也会退出。其他情况下每编辑完一帧把读取到的文件大小减去读取到的帧大小,而指向文件指针从文件头向后移动。
由于accframe数组是char型,因而每个元素是1个字节,现在根据第三个元素查看profile的类型,关于acc音频格式可以参考http://blog.csdn.net/qingkongyeyue/article/details/53120453
这里取的是第三个字节的高两位,移到最低两位,然后根据不同的值进行判断不同编码规格进行判断,AAC-LC是低复杂度的AAC
相应的还有AAC-HE(高效率的)
同等音频,音频文件体积(低码率下比较明显):
AAC-LC>AAC-HE
算法复杂度:
AAC-LC<AAC-HE
下面通过判断accframe的第三个字节的,高四位的低两位和第四位的高两位。然后向右移2位,根据不同的值来判断采样率。这里SIZE是帧的大小。
- AAC音频码流解析
- AAC音频码流解析
- AAC音频码流解析
- AAC音频码流解析
- 视音频数据处理入门:AAC音频码流解析
- 视音频数据处理入门:AAC音频码流解析
- 视音频数据处理入门:AAC音频码流解析
- 视音频数据处理入门:AAC音频码流解析
- AAC 音频编码格式解析
- AAC音频转码初探
- 初学音视频(四)-AAC音频码流分析
- AAC 音频
- AAC 音频
- AAC 音频
- 怎么RTP包里解析出AAC音频数据
- FFmpeg解析视频里面的音频aac保存
- AAC音频编码格式
- AAC音频编码规格
- ASP.NET操作Word的IIS权限配置
- mysql存储过程传入两个参数,循环插入数据
- domReady机制探究及DOMContentLoaded研究
- linux配置大页内存
- 简单Select语句
- AAC音频码流解析
- 【bzoj 1059】[ZJOI2007]矩阵游戏(匈牙利算法)
- Bzoj 3523 [Poi2014]Bricks
- 装饰者模式
- java 单链表
- 20个非常有用的Java程序片段
- HTML标签基础认识
- Java循环总结
- a bit of git