过程比较简单:
需要将aac的前7个字节的ADTS去掉;
添加12字节的RTP Header;
添加2字节的AU_HEADER_LENGTH;
添加2字节的AU_HEADER;
从第17字节开始就是payload(去掉ADTS的aac数据)数据了
音频aac封包格式
RTP承载aac的格式由两部分组成:
2个字节的AU-headers-length
n个AU-header,每个2字节
n个AU,是aac去掉adts的载荷
AU-headers-length
AU-header
AU
AU-header
AU
注意:一个RTP包中可以有一个AU-headers-length 和 n个AU-header和 n个AU(AU每包实际音频数据流)
1. AU-headers-length
头两个字节表示au-header的长度,单位是bit。 一个AU-header长度是两个字节(16bit)因为可以有多个au-header所以AU-headers-length的值是 16的倍数,一般音频都是单个音频数据流的发送,所以AU-headers-length的值是16
//AU_HEADER_LENGTH
bytes[12] = 0x00; //高位
bytes[13] = 0x10; //低位
因为单位是bit, 除以8就是auHeader的字节长度;又因为单个auheader字节长度2字节,所以再除以2就是auheader的个数。
2. AU-header
au-header的高13个bits就是一个au 的字节长度:
//AU_HEADER
bytes[14] = (byte)((len & 0x1fe0) >> 5); //高位
bytes[15] = (byte)((len & 0x1f) <
这样就能得到多个au的长度
3. AU 实际的音频数据