type
status
date
slug
summary
tags
category
icon
password
Property
Mar 20, 2023 03:15 AM
基础知识
ADIF 和 ADTS
AAC 结构体
adts_fixed_header 组成
- profile:
FFmpeg 中对应的定义:
- sampling_frequency_index:
- channel_configuration:
adts_variable_header 组成
ADTS 的 AAC 分析
提取 AAC 代码
- 从视频文件中提取音频数据并封装为 AAC
- adts_header 函数分析:
- 具体的代码逻辑如下:
- 第1个字节高8位为0xff,低4位为0xf0,这是ADTS头的同步字,用于标识数据帧的开始。
- 第2个字节的第3位为MPEG版本,第4和5位为Layer,这些信息描述了AAC编码的版本和层次。
- 第2个字节的第1位为保护标志,表示是否进行了错误保护,这里是1,表示没有进行保护。
- 第2个字节的第2位为私有标志,这里是0,表示不使用私有标志。
- 第2个字节的第6、7位为音频格式,这里是profile,表示使用哪种AAC配置。
- 第2个字节的第8-11位为采样率,这里是sampling_frequency_index,表示使用哪种采样率。
- 第3个字节的第1-4位为声道数,这里是channels。
- 第3个字节的第6-9位为采样率,这里也是sampling_frequency_index。
- 第3个字节的第5位为原始标志,表示音频是否为原始音频,这里是0,表示不是原始音频。
- 第3个字节的第4位为版权标志,表示是否使用了版权保护,这里是0,表示没有使用。
- 第3个字节的第3位为版权标志开始标志,表示版权信息开始的位置,这里是0,表示没有版权信息。
- 第3个字节的第8-9位和第4个字节的前2位为数据帧长度,这里是adtsLen。
- 第4个字节的第3-9位为数据帧长度,这里也是adtsLen。
- 第5个字节的第1-3位为数据帧长度,这里也是adtsLen。
- 第5个字节的第4-8位为缓冲区满标志,这里是0x7ff,表示缓冲区已满。
- 第6个字节的第1-6位为缓冲区满标志,这里也是0x7ff。
- 第7个字节的第1-2位为数据块数,这里是0,表示只有1个数据块。
这段代码是生成AAC数据的ADTS头的代码,ADTS头是一种将AAC音频编码后的数据进行封装的格式,其中包含了音频格式、长度、采样率、声道数等信息。这些信息可以帮助解码器正确的解析音频数据。
- 作者:OctalZero
- 链接:https://octalzero.com/article/ae661974-5f1a-4352-9ae6-38022679a90d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章