H264封装成fmp4再到H5+MSE播放已经告一段落,现在来攻关音频封装到fmp4,音频主要选择AAC编码。今天就研究一下AAC编码的结构。
AAC音频前面有个头为ADTS,后面才是AAC的音频数据。
ADTS(Audio Data Transport Stream):
定义如下:
adts_fixed_header定义如下:
一共28bit,3个字节+4bit,上码流:
syscword: 1111 1111 1111
ID: 0
layer: 00
protection_absent:1
profile: 01
profile 表示使用哪个级别的AAC,如01 Low Complexity(LC)--- AACLC
sampling_frequency_index:1011 ====>8000
private_bit: 0
channel_configuration: 001
original_copy:0
home: 0
adts_variable_header定义如下:
一共28bit,3字节+4bit
上码流:
40和前面的40共用,这里使用了后面的4bit
copyright_identifycation_bit : 0
copyright_identification_start : 0
acc_frame_length:00 0100 1000 100 ==>580 包括头+音频数据总大小
adts_buffer_fulness: 1 1111 1111 11
number_of_raw_data_blocks_in_frame: 00
adts_variable_header定义如下:
由于protecttion_absent==1 所以没有值
raw_data_block定义如下: