接下来我们来解析下rtp负载的ps数据
00 00 01 ba为PS Header的起始码,ps header部分最少为14个字节,如果需要对ps header进行扩展,那么可以在第14个字节的后三位进行设置,我们只需要知道使用起始码来区分ps header,中间的字节是什么意思我们不关心,
00 00 01 bb为PS System Header的起始码,看到这个起始码说明这是个关键帧数据,这个包头一般不看,直接过掉
00 00 01 bc为Ps System Map的起始码,后面两个字节00 12为PSM包头剩余的数据长度,
因此PSM包头的长度为4+2+18=24byte,后面的18个字节我们需要说明下,跳过两个字节
81 01基本没用,接下来00 00为自定义的复合流描述长度,为0表示后面没有,接下来00 08,代表基本流长度,说明后面还有八个字节,接下来的1b是stream type,意思是H264编码格式,24为h265编码格式,下一个字节e0是stream id,意思是视频流(e0-ef为视频流,c0-cf为音频流),接下来00 00为自定义元素流的描述长度,接下来90表示stream type为G.711音频格式,下一个字节c0表示stream id 为音频流,接下来的两个字节00 00同上一样,为自定义元素流的描述长度,接下来的四个字节ec cf 92 0b为CRC的冗余校验,我们不关心,下面我们再看PES header,PES header不论是否为关键帧还是音视频都有这个包头,
00 00 01 e0为PES header的起始码,e0说明的就是视频流,跟随的两个字节fd db为PES packet length,接下来两个字节84 c0需要转为二进制来解析,这里都是一些标志位,我们不管,接下来0a表示可选字段的长度为10个字节,前五个字节31表示为pts 01 41 66 81表示pts的时间戳,后五个字节11 表示为dts 01 41 66 81为DTS的时间戳,因为安防领域对性能要求搞所以视频中没有B帧,所以显示时间戳和解码时间戳是一致的