博客
关于我
安防摄像头监控视频流媒体开发中H264编码NALU结构介绍与I帧判断方法
阅读量:126 次
发布时间:2019-02-27

本文共 1338 字,大约阅读时间需要 4 分钟。

H264编码技术介绍

H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一。H.264是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)的联合视频组(JVT:joint video team)开发的一个数字视频编码标准。该标准最早来自于ITU-T的称之为H.26L的项目的开发。H.26L这个名称虽然不太常见,但是一直被使用着。H.264是ITU-T以H.26x系列为名称命名的标准之一,同时AVC是ISO/IEC MPEG一方的称呼。

H.264标准的主要目标是:与其它现有的视频编码标准相比,在相同的带宽下提供更加优秀的图象质量。通过该标准,在同等图象质量下的压缩效率比以前的标准(MPEG2)提高了2倍左右,因此,H.264被普遍认为是最有影响力的行业标准。

H264编码NALU结构介绍与I帧判断

在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。因此我们平时的每帧数据就是一个NAL单元(SPS与PPS除外)。在实际的H264数据帧中,往往帧前面带有00 00 00 01分隔符,一般来说编码器编出的首帧数据为PPS与SPS,接着为I帧……

H264编码NALU结构

 

帧是组成视频图像的基本单位。关键帧也叫I帧,它是帧间压缩编码里的重要帧;它是一个全帧压缩的编码帧;解码时仅用I帧的数据就可重构完整图像;I帧不需要参考其他画面而生成。视频文件是由多个连续的图片组成。

H264 NALU固定以 0x00 00 00 01为起始,NALU_data部分不会出现这个起始码;在找到下一个起始码之前,当前NALU数据长度不知;

H264 NALU: 00 00 00 01(4字节) NALU type(1字节) NALU_data (N字节) 0x00 00 00 01
起始码(4字节) 类型 数据 下一个NALU

NALU_type 1字节,定义为:

1比特禁止位 2比特 重要性指示位 5比特 类型
固定为0 11 1-12 由h264使用
常用Nalu_type:0x67 (0 11 00111) SPS    非常重要       type = 70x68 (0 11 01000) PPS     非常重要       type = 80x65 (0 11 00101) IDR帧  关键帧  非常重要 type = 50x61 (0 11 00001) I帧        重要         type=1   非IDR的I帧 不大常见0x41 (0 10 00001) P帧      重要         type = 1     0x01 (0 00 00001) B帧     不重要        type = 10x06 (0 00 00110) SEI     不重要        type = 6

所以判断是否为I帧的算法为:

(NALU类型&0001 1111)=5 即 NALU类型&31=5,比如 0x65&31=5

转载地址:http://focd.baihongyu.com/

你可能感兴趣的文章
Nginx从入门到精通
查看>>
Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
查看>>
Nginx代理初探
查看>>
nginx代理地图服务--离线部署地图服务(地图数据篇.4)
查看>>
Nginx代理外网映射
查看>>
Nginx代理模式下 log-format 获取客户端真实IP
查看>>
Nginx代理解决跨域问题(导致图片只能预览不能下载)
查看>>
Nginx代理访问提示ERR_CONTENT_LENGTH_MISMATCH
查看>>
Nginx代理配置详解
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
nginx优化日志拒绝特定404请求写入
查看>>
Nginx优化解析
查看>>
Nginx使用proxy_cache指令设置反向代理缓存静态资源
查看>>
Nginx做反向代理时访问端口被自动去除
查看>>
Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例
查看>>
Nginx入门简介和反向代理、负载均衡、动静分离理解
查看>>
nginx入门篇----nginx服务器基础配置
查看>>
nginx反向代理
查看>>
Nginx反向代理
查看>>