AAC的ADTS头文件信息介绍
来源:互联网 发布:status monitor软件 编辑:程序博客网 时间:2024/05/16 11:00
ADTS是Audio Data Transport Stream的简称。
博文转自:http://blog.csdn.net/jay100500/article/details/52955232
是AAC音频文件常见的传输格式。
有的时候当你编码AAC裸流的时候,会遇到写出来的AAC文件并不能在PC和手机上播放,很大的可能就是AAC文件的每一帧里缺少了ADTS头信息文件的包装拼接。只需要加入头文件ADTS即可。一个AAC原始数据块长度是可变的,对原始帧加上ADTS头进行ADTS的封装,就形成了ADTS帧。
下面分析下ADTS头文件结构和信息:
AAC音频文件的每一帧由ADTS Header和AAC Audio Data组成。
大家可以用AAC Audio ES Viewer工具来查看AAC的ADTS Header。
每一帧的ADTS的头文件都包含了音频的采样率,声道,帧长度等信息,这样解码器才能解析读取。
一般情况下ADTS的头信息都是7个字节,分为2部分:
adts_fixed_header();
adts_variable_header();
先来看:adts_fixed_header();
- syncword :总是0xFFF, 代表一个ADTS帧的开始, 用于同步.
解码器可通过0xFFF确定每个ADTS的开始位置.
因为它的存在,解码可以在这个流中任何位置开始, 即可以在任意帧解码。 - ID:MPEG Version: 0 for MPEG-4,1 for MPEG-2
- Layer:always: '00'
- protection_absent:Warning, set to 1 if there is no CRC and 0 if there is CRC
- profile:表示使用哪个级别的AAC,如01 Low Complexity(LC) -- AAC LC
profile的值等于 Audio Object Type的值减1.
profile = MPEG-4 Audio Object Type - 1 - sampling_frequency_index:采样率的下标
- channel_configuration:声道数,比如2表示立体声双声道
接下来看下adts_variable_header();
- aac_frame_length:一个ADTS帧的长度包括ADTS头和AAC原始流。frame length, this value must include 7 or 9 bytes of header length:
aac_frame_length = (protection_absent == 1 ? 7 : 9) + size(AACFrame)
protection_absent=0时, header length=9bytes
protection_absent=1时, header length=7bytes - adts_buffer_fullness:0x7FF 说明是码率可变的码流。
- number_of_raw_data_blocks_in_frame:表示ADTS帧中有number_of_raw_data_blocks_in_frame + 1个AAC原始帧。
所以说number_of_raw_data_blocks_in_frame == 0 表示说ADTS帧中有一个AAC数据块。
(一个AAC原始帧包含一段时间内1024个采样及相关数据)
两个头文件就讲到这里。
这里给出JAVA和Android里的给AAC添加ADTS头文件的部分方法代码,针对ByteBuffer。
这里是调用:(可根据自己需求,这里的AudioBufFrame是我们自己项目里的类,其实就是个ByteBuffer封装的类)
遵循:BY-NC-SA
署名-非商业性使用-相同方式共享 4.0协议
0 0
- AAC的ADTS头文件信息介绍
- AAC的ADTS头文件信息介绍
- AAC的ADTS头文件信息介绍
- AAC的ADTS头信息介绍
- 视频文件解复用获取的aac文件添加adts头
- AAC ADTS头详解
- ffmpeg 解析aac adts格式的文件
- AAC包增加ADTS头Without MediaCodec
- AAC raw包增加ADTS头
- AAC ADTS
- ADTS和LATM的AAC格式
- FLV(二)-解复用器-AAC-ADTS头-onMetaData内容
- AAC ADTS格式分析
- AAC ADTS LATM 分析
- AAC ADTS格式分析
- AAC ADTS格式分析
- AAC ADTS格式分析
- AAC ADTS格式分析
- linux常用命令之 sed grep awk
- ES权威指南_01_get start_02 Life Inside a Cluster(ES集群内部原理)
- 数论之扩展欧几里得 (求解不定方程,线性同余,求解模的逆元) (但是加了一些自己的东西)
- ES权威指南_01_get start_03 Data In, Data Out
- oracle 管理员不用密码登录
- AAC的ADTS头文件信息介绍
- unittest流程
- 御剑web后台敏感目录扫描
- PAT甲级1060
- Maven项目管理工具初体验
- 深大云网络的PHP视频教程
- 12
- DeepID2——强大的人脸分类算法
- ASP.NET MVC分页问题解决