RTP格式:NALU数据+20个字节的类似的并不符合RTP协议的RTP头。针对IP网络的RTP打包方式。为原始的NAL打包格式,就是开始的若干字节(1,2,4字节)是NAL的长度,而不是start_code,此时必须借助某个全局的数据来获得编码器的profile,level,PPS,SPS等信息才可以解码。
H.264协议只规定了字节流格式,没有规定 RTP 格式。可能也是因为这个原因,JM 的 RTP 格式没有被用到任何场合场合中,成为了摆设。
一共有两种起始码:3字节的0x000001和4字节的0x00000001
3字节的0x000001只有一种场合下使用,就是一个完整的帧被编为多个slice的时候,包含这些slice的nalu使用3字节起始码。其余场合都是4字节的。
H.264 的两种码流格式:
GetAnnexbNALU 处理字节流格式的码流
GetRTPNALU 处理 RTP 格式码流
字节流格式的码流主要用于存储,例如制作 DVD(当然现在的 DVD 还不是用 H.264)
RTP 格式码流主要用于网络传送,例如在线看电影
最简单RTP包包括RTP包头、H.264扩展头和H.264码流
码流在JM里会首先打包到NALU里去,之后要把NALU中的相关信息变成H.264扩展头,然后再加上一个RTP包头,就变成了一个RTP包。
H.264扩展头就一个字节,三个信息。
RTP包头12和16字节两种,JM都先读四个字节,再读四个字节时间戳,再就是buffer,之后还有四个字节的信息源标识符,一共12字节才对。