【记录备忘】
对一段aac进行rtp封包,过程比较简单:
- 需要将aac的ADTS去掉;
- 添加12字节的rtp报头;
- 添加2字节的AU_HEADER_LENGTH;
- 添加2字节的AU_HEADER;
- 从第17字节开始就是payload(去掉ADTS的aac数据)数据了
下面附上代码
private UdpSocket udpSocket = null;
private byte[] sendbuf=new byte[1500];
private int seq_num = 0;//rtp包的序列号
private int timestamp_increse=(int)(96);//时间戳间隔
private static int ts_current=0;
private int bytes=0;
//data是已经去掉ADTS的数据,len是data的长度
public void sendRTPData(byte[] data, int len)throws IOException {
memset(sendbuf, 0, 1500);
sendbuf[1] = (byte) (sendbuf[1] | 96); // 负载类型号96,其值为:01100000
sendbuf[0] = (byte) (sendbuf[0] | 0x80); // 版本号,此版本固定为2
sendbuf[1] = (byte) (sendbuf[1] & 254); //