AAC sequence header存放的是AudioSpecificConfig结构,该结构则在“ISO-14496-3 Audio”中描述。AudioSpecificConfig结构的描述非常复杂,这里简化下,事先设定要将要编码的音频格式,其中,选择"AAC-LC"为音频编码,音频采样率为44100,于是AudioSpecificConfig简化为下表:

aac-audio-specific-config.jpg

1
2
3
4
5
_aacCodecConfig[0] = 0xAF;
_aacCodecConfig[1] = 0x00;
if (audio_dec_ctx->extradata_size == 2 && audio_dec_ctx->extradata != nullptr) {
		memcpy(_aacCodecConfig + 2, audio_dec_ctx->extradata, 2);
}

使用ffmpeg拉流,AudioSpecificConfig保存在extradata下。header前面的0xAF表示的音频意义如下:

aac-audio-tag-fields.jpg

0xA表示 AAC,0xF高2位bits表示44khz,0xF低2位bits表示16位立体声道

0x00 表示aac packet type,即aac包类型,该值为0时表示后面跟着aac header,为1时表示后面跟着aac data。