RTP音频AAC封包

过程比较简单:

需要将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) << 3); //低位

这样就能得到多个au的长度

 

3. AU 实际的音频数据 

posted @ 2020-04-29 14:43  夜空已沉寂  阅读(745)  评论(0编辑  收藏  举报