前面文章《rtmp数据封装一-块(chunk)》中讲到rtmp传输媒体数据时是把一整帧数据拆分红chunk的形式发送的。其实一帧媒体数据在拆分红chunk以前还须要进行必要的头部信息封装,本文介绍rtmp协议中AAC/G.711音频数据的头部信息封装。web
第一个byte包含音频的编码参数:svg
1-4bit: audioCodeId
5-6bit: 采样率 00 5.5KHZ, 01 11KHZ, 10 22KHZ, 11 44KHZ
7 bit: 采样长度 0 8bit, 1 16bit
8 bit: 立体声 0 单声道, 1 双声道
AAC rtmp头部信息封装
第一帧 AAC sequence header
第一帧共4个byte:网站
1) 第1个byte : audioCodeId=10,若是是44KHZ、16bit、双声道,第一个byte是0xAF。若是实际采样率不是5.5KHZ、11KHZ、22KHZ、44KHZ,就选一个接近的。编码
2) 第2个byte : 0x00 表示是sequence header指针
3) 第3-4个byte : 0x14,0x10xml
其余帧 AAC raw data
1) 第1个byte : audioCodeId=10,若是是44KHZ、16bit、双声道,第一个byte是0xAF。若是实际采样率不是5.5KHZ、11KHZ、22KHZ、44KHZ,就选一个接近的。get
2) 第2个byte : 0x01 表示是raw data博客
3) 第3byte开始 : 去掉前7个byte的AAC头以后的AAC数据。it
G.711U rtmp头部信息封装
1) 第1个byte : audioCodeId=8,若是是11KHZ、16bit、单声道,第一个byte是0x86。若是实际采样率不是5.5KHZ、11KHZ、22KHZ、44KHZ,就选一个接近的。io
2) 第2个byte开始是存放G.711U数据。
G.711A rtmp头部信息封装
1) 第1个byte : audioCodeId=7,若是是11KHZ、16bit、单声道,第一个byte是0x76。若是实际采样率不是5.5KHZ、11KHZ、22KHZ、44KHZ,就选一个接近的。
2) 第2个byte开始是存放G.711A数据。