原文地址: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个采样及相关数据)。

最新文章

  1. 【译】Unity3D Shader 新手教程(4/6) —— 卡通shader(入门版)
  2. IIS短文件名暴力枚举漏洞利用脚本
  3. css定位 与position
  4. [GraphQL] Use GraphQL's List Type for Collections
  5. IO细述
  6. Oracle内存管理理论篇二
  7. Maven使用本地jar包(小私服?支持自动打入war包)
  8. 通过Workbook类 生成Excel导出数据
  9. jQuery源码整体结构(源码2.0.3)
  10. iOS GorupBy
  11. Android百度地图默认位置中心点设置
  12. Claris and XOR(模拟)
  13. CentOs 系统启动流程相关
  14. 【转载】Centos7 中使用Supervisor守护进程
  15. MySQL数据库入门笔记
  16. MySQL数据库内置函数
  17. 了解一下SQL映射文件
  18. MyBatis笔记----报错:Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决方法
  19. 关于解决Missing Number之类的算法问题
  20. php 对象转数组

热门文章

  1. 使用promise构建一个向服务器异步数据请求
  2. 2019-4-29-.NET-Standard
  3. centos6和7安装vnc
  4. ubuntu apache配置检测及重启 nginx配置检测及重启
  5. JS window对象 History 对象 history对象记录了用户曾经浏览过的页面(URL),并可以实现浏览器前进与后退相似导航的功能。语法: window.history.[属性|方法]
  6. Spring接收数据,传递数据
  7. python_django_urls模块与views模块请求访问过程
  8. java script两个列表之间移动数据
  9. bzoj1006题解
  10. hive的数据存储格式