Android开发 AAC的ADTS头解析[转载]
2024-09-01 05:53:32
原文地址:https://www.jianshu.com/p/b5ca697535bd
1. ADTS(Audio Data Transport Stream)头之于AAC
AAC音频文件的每一帧都由一个ADTS头和AAC ES(AAC音频数据)组成。
AAC数据帧
2. ADTS头分析
ADTS头包含了AAC文件的采样率、通道数、帧数据长度等信息。ADTS头分为固定头信息和可变头信息两个部分,固定头信息在每个帧中的是一样的,可变头信息在各个帧中并不是固定值。ADTS头一般是7个字节((28+28)/ 8)长度,如果需要对数据进行CRC校验,则会有2个Byte的校验码,所以ADTS头的实际长度是7个字节或9个字节。
2.1 固定头信息:adts_fixed_header()
ADTS头的固定头信息在每个帧中都是一样的。
adts_fixed_header
- syncword:帧同步标识一个帧的开始,固定为0xFFF
- ID:MPEG 标示符。0表示MPEG-4,1表示MPEG-2
- layer:固定为'00'
- protection_absent:标识是否进行误码校验。0表示有CRC校验,1表示没有CRC校验
- profile:标识使用哪个级别的AAC。1: AAC Main 2:AAC LC (Low Complexity) 3:AAC SSR (Scalable Sample Rate) 4:AAC LTP (Long Term Prediction)
- sampling_frequency_index:标识使用的采样率的下标
- private_bit:私有位,编码时设置为0,解码时忽略
- channel_configuration:标识声道数
- original_copy:编码时设置为0,解码时忽略
- home:编码时设置为0,解码时忽略
sampling_frequency_index 采样率
channel_configuration 频道配置
2.2 可变头信息:adts_variable_header()
adts_variable_header.png
- copyrighted_id_bit:编码时设置为0,解码时忽略
- copyrighted_id_start:编码时设置为0,解码时忽略
- aac_frame_length:ADTS帧长度包括ADTS长度和AAC声音数据长度的和。即 aac_frame_length = (protection_absent == 0 ? 9 : 7) + audio_data_length
- adts_buffer_fullness:固定为0x7FF。表示是码率可变的码流
- number_of_raw_data_blocks_in_frame:表示当前帧有number_of_raw_data_blocks_in_frame + 1 个原始帧(一个AAC原始帧包含一段时间内1024个采样及相关数据)。
最新文章
- 【译】Unity3D Shader 新手教程(4/6) —— 卡通shader(入门版)
- IIS短文件名暴力枚举漏洞利用脚本
- css定位 与position
- [GraphQL] Use GraphQL's List Type for Collections
- IO细述
- Oracle内存管理理论篇二
- Maven使用本地jar包(小私服?支持自动打入war包)
- 通过Workbook类 生成Excel导出数据
- jQuery源码整体结构(源码2.0.3)
- iOS GorupBy
- Android百度地图默认位置中心点设置
- Claris and XOR(模拟)
- CentOs 系统启动流程相关
- 【转载】Centos7 中使用Supervisor守护进程
- MySQL数据库入门笔记
- MySQL数据库内置函数
- 了解一下SQL映射文件
- MyBatis笔记----报错:Exception in thread ";main"; org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决方法
- 关于解决Missing Number之类的算法问题
- php 对象转数组
热门文章
- 使用promise构建一个向服务器异步数据请求
- 2019-4-29-.NET-Standard
- centos6和7安装vnc
- ubuntu apache配置检测及重启 nginx配置检测及重启
- JS window对象 History 对象 history对象记录了用户曾经浏览过的页面(URL),并可以实现浏览器前进与后退相似导航的功能。语法: window.history.[属性|方法]
- Spring接收数据,传递数据
- python_django_urls模块与views模块请求访问过程
- java script两个列表之间移动数据
- bzoj1006题解
- hive的数据存储格式