120703-1 RTP+H264包格式

  1. 在HI3515上测试发现 HI3515编码输出的是NALU单元,以 00 00 00 01开头
  2. 经过jrtplib会增加额外的信息,trace如下

SimpleH264SendPacket(unsigned char *val,uint32_t length)

NALU=val[4];

根据是否需要分包(包大小<1024)

不分包 

sess.SendPacket((void *)&val[4],valid_len,PLOAD_TYPE,true,DefaultTimestampIncrement)

分包

第一包

sess.SendPacket(sendStartAddr-1,send_length,PLOAD_TYPE,false,DefaultTimestampIncrement)

中间包

sendStartAddr[pos-2]=(NALU&0x60)|28

sendStartAddr[pos-1]=(NALU&0x1f)|0x40

sess.SendPacket(sendStartAddr+pos-2,send_lenght,PLOAD_TYPE,false,DefaultTimestampIncrement)

最后包

sess.SendPacket(sendStartAddr+pos-2,send_lenght,PLOAD_TYPE,true,0)

3 jrtplib的发包过程

int RTPSession::SendPacket(const void *data,size_t len, uint8_t pt,bool mark,uint32_t timestampinc)

执行过程

packetbuilder.BuildPacket(data,len,pt,mark,timestampinc))

PrivateBuildPacket(data,len,pt,mark,timestampinc,false);

构造函数

BuildPacket  使用默认参数(c++特性)

rtptrans->SendRTPData(packetbuilder.GetPacket(),packetbuilder.GetPacketLength()))


sources.SentRTPPacket();

未完。。

看了半天也没找到externd hdr的具体说明。挂起中。。。

你可能感兴趣的:(120703-1 RTP+H264包格式)