安防摄像头监控视频流媒体开发中H264编码NALU结构介绍与I帧判断方法

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帧……

帧是组成视频图像的基本单位。关键帧也叫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 = 7
0x68 (0 11 01000) PPS     非常重要       type = 8
0x65 (0 11 00101) IDR帧  关键帧  非常重要 type = 5
0x61 (0 11 00001) I帧        重要         type=1   非IDR的I帧 不大常见
0x41 (0 10 00001) P帧      重要         type = 1
0x01 (0 00 00001) B帧     不重要        type = 1
0x06 (0 00 00110) SEI     不重要        type = 6

所以判断是否为I帧的算法为:
(NALU类型&0001 1111)=5 即 NALU类型&31=5,比如 0x65&31=5

原文地址:https://www.cnblogs.com/TSINGSEE/p/11971265.html

时间: 2024-11-10 11:04:32

安防摄像头监控视频流媒体开发中H264编码NALU结构介绍与I帧判断方法的相关文章

安防摄像头有这么多种类,如何正确选择?

当前,市面上有各种各样的安防摄像头可供我们选择,我该选择哪种呢?从哪几个方面来考虑? 模拟摄像头还是数字摄像头?首先要考虑的是,你是否愿意配置路由器或WIFI,也就是说,处理网络相关的事情,如果愿意,可以选择数字网络摄像头.如果不愿意,你会更愿意选择CCTV,即AHD(模拟高清)摄像头及DVR(数字硬盘录像机).CCTV的运行是通过同轴电缆及BNC接头来连接的DVR和模拟摄像头,DVR将模拟视频流数字化并存储于本地硬盘驱动器.如今大多数DVR都有这样的功能,将来自不同摄像头(或被称为通道)的视频

RTSP安防摄像头/海康大华硬盘录像机/NVR网页低延时播放流媒体服务器EasyNVR调取接口报Unauthorized如何解决?

随着雪亮工程.明厨亮灶.手机看店.智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网.微信直播,我们知道摄像头直播的春天了.将安防摄像头或NVR上的视频流转成互联网直播常用的RTMP.HTTP-FLV.HLS等流格式再分发给用户端进行直播,不管身处何地都可以通过移动通讯设备查看监控设备,这些功能是EasyNVR互联网直播系统研发和设计的初衷和基础功能.另外EasyNVR增值功能是可通过接口二次集成在自己的原有的web业务系统实现网页.H5无插件实时直播. EasyNVR调取接口报Unautho

LiveNVR实现安防摄像头RTSP WEB无插件直播中ONVIF预制位接口的使用说明

ONVIF发现接入摄像机 通过ONVIF探测发现可以将摄像接入LiveNVR,并提供互联网无插件直播,具体介绍可以参考 https://www.liveqing.com/docs/products/LiveNVR.html ONVIF相关接口 ONVIF探测 云台控制 删除预制位 获取预制位列表 设置预制位 跳转到预制位 原文地址:https://www.cnblogs.com/kumukim/p/11535435.html

Qt编写安防视频监控系统18-云台控制

一.前言 云台控制是视频监控系统中必备的一个功能,对球机进行上下左右的移动,还有焦距的控制,其实核心就是控制XYZ三个坐标轴,为了开发这个模块,特意研究了各种云台控制的方法和开源库比如soap,有些厂家使用自家SDK控制云台,但是大部分都会选择onvif来控制,毕竟是国际标准的通用的,只要符合这个标准的都可以使用,onvif协议的解析通常用的开源库是soap,涵盖的内容比较全,包括获取各种设备信息和回控等,缺点就是比较臃肿,使用非常不容易,函数名实在是有点不顺手,很多新手都绕在其中不知所措最后放

Qt编写安防视频监控系统2-视频播放

一.前言 视频播放功能是核心功能之一,为了统一管理接口,统一封装成一个控件,对外提供seturl open close方法即可,不用去管内部的具体处理,这样就可以提供多种接口来实现统一的管理,比如vlc内核+ffmpeg内核+海康sdk内核等,随意切换,在使用各种内核的过程中,对比下来,发现easyplayer的内核是最好的,在国内用ffmpeg做接口做到了极致,CPU占用极低. 我个人封装的vlc内核和ffmpeg内核播放控件,均提供统一的接口设置两种OSD,包括OSD位置和风格样式,可设置保

Qt编写安防视频监控系统11-动态换肤

一.前言 Qt中的动态换肤技术是非常一流的,直接调用qApp->setStyleSheet(qss);就可以对整个应用程序进行换肤,如果样式表内容不多,或者对应的贴图不对,效率还是蛮好的,不过据说有些人写了几千行的样式表,加载起来能够明显感觉卡顿,毕竟此时全部刷新加载重绘,是非常耗CPU的,这种情况就需要避免尽量统一样式表,能合并的就合并,当然,在性能比较好的电脑上,这个基本上遇不到的,也感觉不到的,好比现在的手机相比于十年前的手机,现在动不动都6GB内存了,比起以前256MB内存的时候,不知道

安防摄像头WEB端直播,实现按需播放,节省带宽和服务器压力

介绍 按需直播肯定是为了减少带宽流量和服务器性能占用.下面介绍下LiveNVR中按需直播的实现机制. 解析 如下是LiveNVR中关于按需直播的配置: LiveNVR软件目录下有一个nginx的目录.项目中LiveNVR.exe主要实现拉取摄像机RTSP流,推送各个摄像机实时流给nginx实现流媒体转发的功能.当然LiveNVR本身还有截图.Onvif云台控制等辅助功能. 配置按需直播后如果没有客户端播放,LiveNVR不会拉取摄像机的RTSP数据,更不会推送RTMP直播流.当有client调用

Qt编写安防视频监控系统15-远程回放

一.前言 远程回放有两种处理方式,一种是采用NVR厂家提供的SDK开发包来登录到NVR上,然后根据SDK的函数接口指定的视频文件,当然也有接口查询视频文件列表等:一种是采用视频监控行业的国标GB28181协议,来注册到NVR上然后查询和播放视频文件.两种处理方式各有优缺点,用SDK的话,接口比较丰富,有很多特殊的处理都在SDK的函数中可以看到,相对来说速度和清晰度会更快一点,操作的友好性高,毕竟是自家的SDK,肯定对自家的设备支持非常好,缺点就是每个厂家都有一个SDK开发包,如果第三方集成厂家需

浏览器低延时播放RTSP安防摄像头/海康大华硬盘录像机/NVR/流媒体服务器硬件开发机设备失去授权如何解决?

EasyNVR开发机是通过定制的硬件机器来运行对应的流媒体软件,因此硬件的授权是和开发机内部的软件相互绑定的,因此失去授权实际是软件授权出现了问题. 解决问题: 之前版本的授权方式是通过绑定机器的机器码来,设置对应的激活码来给对应的硬件设备上的软件进行授权,软件读取到对应的成功的激活码就进行成功授权. EasyNVR3.3.1版本正对软件版本授权有了优化,将之前的单纯的激活方式改为了Pem文件授权,更加方便了客户的授权,也提高了授权的安全性和稳定性.因此对应出现硬件授权不稳定的,可以联系相关技术