本文先介绍AAC ADTS格式的理论知识,然后详细介绍编写header的API——adts_header()。
1. AAC ADTS格式的理论知识
ADTS格式的音频流里每一帧数据都包含两部分,分别为header和data,可以从任意帧的位置开始解码,其结构简图如下所示:
header里有分为adts_fixed_header(固定头)和adts_variable_header(可变头),每一帧的固定头长度固定为28bit,而不同帧的可变头长度可不同,每种header的详细参数见下表:
adts_fixed_header | ||
bits | 备注 | |
syncword | 12 | 同步头,表示一帧的开始, 总是0xFFF |
ID | 1 | MPEG标识符, 0:标识MPEG-4; 1:标识MPEG-2 |
layer | 2 | 总是:00 |
protection_absent | 1 | 是否包含校验码, 0:包含; 1:不包含 |
profile | 2 | 使用哪个级别的AAC,详见1.1 |
sampling_frequency_index | 4 | 采样率下标,详见1.2 |
private_bit | 1 | // |
channel_configuration | 3 | 表示声道数目 |
original_copy | 1 | // |
home | 1 | // |
adts_variable_header | ||
bits | 备注 | |
copyright_identification_bit | 1 | // |
copyright_identification_start | 1 | // |
aac_frame_length | 13 | ADTS头部+data的长度< |