您的位置:首页 > 其它

H264协议简介

2017-12-06 16:52 204 查看
本文简单介绍一下H264协议内容,都是项目中具体使用的,太详细的不必介绍了,需要详读协议。

首先需要明确H264可以分为两层:

1.VCL video codinglayer 视频编码层

2.NAL network abstraction layer 网络提取层

对于VCL具体的编解码算法这里就不介绍了,只介绍常用的NAL层,即网络提取层,在demux的时候常用。这里面包含了该视频的一些metadata详细信息,是解码的基础。

首先每一帧的NAL单元的区分有两种方式:

1.通过字节区分,前四个字节为size,后面紧跟数据,以此类推,过完size数后的四个字节是下一个NAL单元的size,后面紧跟数据。

2.通过特殊字符确认,00 00 01(一般情况)或者00 00 00 01(NAL单元是一帧的开始)来区分NAL单元。

官方文档解析NAL单元的表格如下:



比如一帧的开始是00 00 00 01 67,那么00 00 00 01作为区分NAL单元的一个区分位,可以去掉。正式的NAL type是后面的67(16进制),二进制为:0110 0111

其中第一位是:Forbidden_zero_bit=0;

之后两位是:Nal_ref_idc:表示NAL的优先级。0~3,取值越大,表示当前NAL越重要,需要优先受到保护。如果当前NAL是属于参考帧的片,或是序列参数集,或是图像参数集这些重要的单位时,本句法元素必需大于0。

后五位是:Nal_unit_type:当前NAL 单元的类型,参照上面表格中来确认类型。其中6和7比较重要,也就是所谓的PPS,SPS,包含了详细的metadata信息,是解码的基础。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: