字节流格式(Annex B)和RTP格式流浅析

字节流格式(Annex B)和RTP格式流浅析

 

AnnexB(附录B)格式:NALU数据+开始前缀(00000001或000001),针对H.320电话会议。

 

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字节才对。

 

 

 

 


你可能感兴趣的:(网络,存储,buffer,扩展,电话,h.264)