rtmp封装不同采样率的AAC

参考文章:https://www.cnblogs.com/lidabo/p/7324369.html

flv文件格式:https://www.cnblogs.com/musicfans/archive/2012/11/07/2819291.html

ISO文档:http://read.pudn.com/downloads98/doc/comm/401153/14496/ISO_IEC_14496-3%20Part%203%20Audio/C036083E_SUB1.PDF

 

rtmp封装AAC第一帧数据时,需要音频同步包,里面包含AAC的相关信息。音频同步包大小固定为 4 个字节。前两个字节被称为 [AACDecoderSpecificInfo],用于描述这个音频包应当如何被解析。后两个字节称为 [AudioSpecificConfig],更加详细的指定了音频格式。

下图为前两个字节 0xAF 0x00

rtmp封装不同采样率的AAC_第1张图片

由上图可知,AAC的soundRate固定为3

 

rtmp封装不同采样率的AAC_第2张图片

由上图可知:

后两个字节需要指定AAC的类型和采样率,

AAC sequence header也就是包含了AudioSpecificConfigAudioSpecificConfig包含着一些更加详细音频的信息,AudioSpecificConfig的定义在ISO14496-31.6.2.1 AudioSpecificConfig,这里就不详细贴了。摘抄自https://www.cnblogs.com/musicfans/archive/2012/11/07/2819291.html)

查看ISO文档可知

1.6.3.3 samplingFrequencyIndex

rtmp封装不同采样率的AAC_第3张图片

rtmp封装不同采样率的AAC_第4张图片

1.5.1 MPEG-4 audio object types:

AAC-LC的type为2

rtmp封装不同采样率的AAC_第5张图片

 

根据上述图标,举例:

AAC LC 8000Hz,则第一帧配置为

body[i++] = 0xAF;
body[i++] = 0x00;
body[i++] = 0x15;
body[i++] = 0x90;

后两个字节为

00010 1011 0010 0 0 0

AACLC 8000hz stereo 

你可能感兴趣的:(音视频,rtmp,AAC,LC,8khz)