RTMP解析音频AAC
我们知道AAC如果带ADTS头一般是FF F1或者FF F9,开头的,但是有些网络协议在传输AAC的时候是不带ADTS头的
譬如:RTSP传输的媒体流中的AAC是被封装在RTP中的,此时的AAC是不带ADTS头的,而ADTS头里有音频参数信息;所以此时解析音频是依赖RTSP协议的SDP中的音频参数信息解码的;
先介绍下AAC的ADTS格式:
除了ADTS(FF F1/F9 开头的7字节)还有ADIF格式常用在磁盘存储中,这里不多做介绍;
RTMP的AAC是不带ADTST头的,所以我们接下来介绍下RTMP的AAC格式解析:
70 b5 e8 5d bb 3d 14 23 0a d4 6e 0f 08 00 45 00
00 66 65 82 40 00 3f 06 e4 ae 0a 0b 77 94 0a 09
65 b9 07 8f 2a af be e6 c4 7b 97 5b db 58 50 18
01 f5 be 5b 00 00 06 74 e6 c0 00 00 32 08 01 00
00 00 af 01 01 16 2e a0 48 61 88 10 04 00 02 d8
b8 94 e2 71 20 82 07 6a 58 77 1e d0 81 c3 84 4f
db 3e 7a eb e9 16 39 6c 99 c0 40 54 2b 08 10 a8
84 c8 ab c0
af 01 01 16 2e a0 48 61 88 10 04 00 02 d8
af --的a--- 1010 1111 其中的4bit 1010 表示soundFormat AAC
af的f: 11 2bit,表示采样率 44100HZ
1 1bit 表示位宽 16位宽
1 1bit表示声道 双声道
af后边的 01 表示 AAC raw;如果是0x00 则表示AAC sequence header
如果是AAC序列头则后边的两个字节还可以解析参数:
https://blog.csdn.net/jctian000/article/details/93205521
如图:(下图来自转载)