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信息,是解码的基础。
首先需要明确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信息,是解码的基础。
相关文章推荐
- UPnP 协议简介(原创)
- WebSocket(3)-- WebSocket协议简介
- OAUTH协议简介
- RTP协议全解析(H264码流和PS流)
- Cisco标准的EBGP与IBGP协议的区别简介
- android WebSocket协议简介
- 开放授权协议OAuth2.0简介
- HTTP协议的八种方法简介
- OAUTH协议简介,互联网营销
- RTP协议全解(H264码流和PS流)
- websocket协议简介
- IEEE 802.3协议简介
- H264(NAL简介与I帧判断)
- 基于SIP和RTP协议的开源VOIP之QuteCom简介
- rtmp协议简单解析以及用其发送h264的flv文件
- [C#网络编程系列]专题一:网络协议简介
- AMF协议简介
- 怎样接收电子邮件(POP3协议简介)(转载,写的很简洁)
- MQTT协议-MQTT协议简介及协议原理