用于实时视频监控的客户端实现方法

文档序号:7945328阅读:228来源:国知局
专利名称:用于实时视频监控的客户端实现方法
技术领域
本发明涉及一种基于网络的视频监控客户端的实现方法,属于视频监控技术领域。
背景技术
随着网络的发展,实时网络视频监控系统在日常生活、生产中得到了越来越广泛的应用。网络视频监控系统一般包括监控终端的视频采集、视频的网络传输和客户端的视频显示等过程。监控终端首先将采集到的视频数据按照特定的压縮标准进行压缩,形成视频帧序列。为了适应不同的传输网络, 一个大的视频帧会被拆分成若干个数据包,分别添加上相应的控制信息,通过网络发送到客户端。客户端通过网络接收监控端发来的数据包,根据数据包中的控制信息进行组帧,并进行视频的译码和显示。
由于网络的不可靠性,特别是当应用于无线网络时,这些视频数据包到达客户端时会不可避免的产生丢包和逆序。如果为了保证实时性而丢弃发生逆序和丢包的视频帧,则图像的流畅性和清晰度将大打折扣;而为了修复发生错误的帧而进行重传和等待,固然可以提高流畅性和清晰度,但却加重了网络负担,并以牺牲实时性为代价——这是实时视频监控这一服务的特性所不允许的。因此,如何采用合理的算法,得到一个既保证实时性,又兼顾图像的流畅性和清晰度的最优方案成为客户端设计需要重点考虑的问题。

发明内容
本发明针对现有网络视频监控技术存在的问题,提供一种用于实时视频监控的客户端实现方法,该方法既保证实时性又兼顾图像的流畅性和清晰度。
本发明的用于实时视频监控的客户端实现方法,包括视频缓冲步骤、视频接收步骤、视频解压步骤及控制指令步骤;视频缓冲步骤将接收到的数据包在连续的帧缓冲区内进行组帧和缓冲,并在缓冲区中形成一个帧队列;视频接收步骤从网络接收视频数据包,解析数据包中的控制信息,并采用帧序号窗算法来判断数据包的合法性,将合法的数据包放入帧队列的队尾,当帧缓冲区内的帧完整时,置位该帧缓冲区状态位;视频解压步骤按照校验窗算法从帧队列的队首取完整帧进行译码显示,当帧缓冲区的数据被取走或者丢弃时,复位该帧缓冲区状态位;控制指令步骤接收用户的操作信息,并根据用户的操作对监控终端进行远程控制;具体的流程如下
(1) 初始化视频缓冲区并设置视频缓冲区参数;
(2) 创建网络套接字并进行初始化;
(3) 初始化视频流解压和显示的参数;
(4) 创建并开启以下任务a视频数据接收并缓冲任务;b视频数据解压并显示任务;C远程控制任务。
所述流程步骤(1)初始化视频缓冲区并设置视频缓冲区参数的流程为a设置帧缓冲区的大小;b设置最大缓冲帧数;c获得视频缓冲区的总大小; d清空视频缓冲区; e设置视频缓冲区的初始状态为空。 所述流程步骤(3)初始化视频流解压和显示的参数的流程如下 a设置输入视频的压縮标准; b设置输入视频的帧率; C设置视频解压输出格式; d设置视频解压输出分辨率;
e获得视频显示缓冲区的大小。
所述流程步骤(4)中视频数据接收并缓冲任务的流程如下 a开始;
b等待接收视频数据包;
c是否是传输层测试数据包?如果是,转到下一步,否则,转向步骤e; d发送响应数据包到终端,转向步骤b;
e接收数据包的帧序号是否在帧序号窗内?如果是,转到下一步,否则,转向步骤b;
f该帧序号是否大于缓冲区中队尾帧的帧序号?如果是,转到下一步,否则,转向步骤
g是否有空的帧缓冲区存放该数据包?如果是,转到下一步,否则,转向步骤b;
h根据接收数据包帧序号找到接收数据包应该存放的帧缓冲区位置; I根据包序号存放数据包到帧缓冲区内的相应位置; j更新队尾帧序号,转到步骤n;
k该帧序号是否小于缓冲区中队首帧的帧序号?如果否,转到下一步,否则,转向步骤
1根据接收数据包帧序号找到接收数据包应该存放的帧缓冲区位置; m根据包序号存放数据包到帧缓冲区内的相应位置; n该帧是否完整?如果是,转到下一步,否则,转向步骤b; o该帧缓冲区状态位置位,转向步骤b。 所述流程步骤(4)中的视频数据解压并显示任务的流程如下 a开始;
b缓冲区是否为空?如果否,转向下一步,否则,转向步骤b;
c队首帧是否完整?如果否,转向下一步。否则,转向步骤n;
d该帧是否是缓冲区内的唯一一帧?如果否,转向下一步,否则,转向步骤b;
e校验窗中是否有完整帧?如果否,转向下一步,否则,转向步骤k;
f计数器加一;
g计数器是否达到上限?如果否,转到下一步,否则,转向步骤i; h等待一段时间(时间段I ),转向步骤b;
i计数器清零;
j丢弃队首帧,将队首移到下一帧,转向步骤b;k等待一段时间(时间段II);
1队首帧是否完整?如果否,转向下一步,否则,转向步骤n; m丢弃队首帧,将队首移到第一个完整帧; n计数器清零;
o将队首帧复制到译码缓冲区 p该帧缓冲区状态位复位; q译码显示;
r队首移到下一帧,转到步骤b; 所述流程步骤(4)中的远程控制任务的流程如下 a开始;
b等待用户操作信息;
c是否是修改帧率操作?如果是,转到下一步,否则,转到步骤e;
d修改本地译码的帧率参数设置;
e将用户操作信息转化为远程控制信息;
f发送控制信息到终端,转向步骤b。
帧序号窗是以缓冲区中队尾帧的帧序号为参考点,前后一段帧序号的范围,该范围可根
据网络的时延大小和最大帧序号的值来确定, 一般设为最大帧序号的5%~20%。只有接收到的 数据包的帧序号在帧序号窗内并且大于缓冲区中队首帧的帧序号,数据包才是合法的。合法 的数据包按照帧序号和包序号存入对应的帧缓冲区内,否则予以丢弃。如果新接收到的数据 包中包含的帧序号在帧序号窗范围之内,并且大于队尾的帧序号,则以此新接收到的帧序号 为队尾,相应的帧序号窗也向前滑动。由于帧序号窗的限定,因严重的时延而无效的视频数 据包不会对译码造成影响,并且由于帧序号窗随着新到来的帧序号不断向前滑动,滑出帧序 号窗外的尚未完整接收的帧也会被直接丢弃,很好的保证了译码的实时性。
校验窗算法是首先以队首帧为校验窗的起点,检测队首帧是否完整,如果完整,则把队 首帧提交译码,校验窗向后滑动一帧,继续进行;如果队首帧不完整,则依次检测校验窗内 其他帧是否完整;如果不存在完整帧,则等待一段时间,记为时间段I,重复轮询检测,直 到计数器到达上限,丢弃队首帧,校验窗向后滚度一个帧的长度继续检测;如果校验窗内存 在完整帧,说明这一完整帧前面所有的不完整帧都发生了逆序或者丢包,此时等待一段时间 记为时间段II,然后再检测队首帧是否完整;如果完整,表明已修复了该帧的逆序,提交译 码并跳到下一帧,校验窗向前滚动一帧,继续进行;如果队首帧仍然不完整,则判定其为丢 包造成的丢帧,直接放弃并将队首移到第一个完整帧,提交译码,滑动校验窗,重新开始。 这样,由于逆序而造成的不必要的丢帧被最大化的消除了,同时也兼顾了译码的实时性。时 间段I、计数器上限、时间段II的大小可以根据视频的帧率和客户端可容忍的时限大小来确 定。时间段I与计数器的乘积一般不大于帧间隔时间的70%,时间段II一般设为帧间隔时间 的30%左右。
本发明采用帧序号窗和校验窗结合的算法,在保证实时监控的前提下,最大程度上消除 了网络逆序和丢包对图像质量的不利影响,提高了图像的清晰度,流畅度和分辨率,在网络 条件不好的情况下,兼顾了客户端的图像质量和实时性,为整个视频监控系统的可靠稳定运行提供了充分的后台保障。能够使客户端实时地显示远程监控视频,并可根据用户的操作对 远程的监控终端进行控制和参数修改,另外,采用本发明的基于网络的客户端,任何联网的 电脑都可以作为监控中心,使用更方便,应用范围更广。


图l为本发明的总体结构框图,
图2为视频数据接收并缓冲任务的流程图。
图3为视频数据解压并显示任务的流程图。
图4为远程控制任务的流程图。
其中1、视频接收步骤,2、视频缓冲步骤,3、视频解压步骤,4、控制指令步骤。
具体实施例方式
如图1所示,本发明的方法在功能上分为四个步骤视频接收步骤l、视频缓冲步骤2、
视频解压步骤3及控制指令步骤4。视频接收步骤1用于实现视频数据的接收、帧合法性的 判断和计算存放位置进行组帧等功能;视频缓冲步骤2负责视频的缓冲;视频解压步骤3采 用校验窗算法,并对正确接收的视频数据帧进行译码显示;控制指令步骤4接收用户的操作 信息,并根据用户的操作对监控终端进行远程控制,包括终端开启和关闭的控制,云台的控 制,视频压縮码率和帧率的控制等。
客户端开始运行后,进行缓冲区、网络套接字和视频解压参数的初始化,并创建各个任 务。视频数据接收并缓冲任务负责将接收的视频帧顺序放到缓冲区中,视频数据的解压并显 示任务负责将完整的视频帧顺序从缓冲区中取出并显示出来。远程控制任务负责对远程监控 终端进行控制。具体流程的步骤如下
(1) 初始化视频缓冲区并设置视频缓冲区参数;
(2) 创建网络套接字并进行初始化;
(3) 初始化视频流解压和显示的参数;
(4) 创建并开启以下任务 a视频数据接收并缓冲任务; b视频数据解压并显示任务; c远程控制任务。
其中步骤(1)初始化视频缓冲区并设置视频缓冲区参数的具体流程步骤为
a设置帧缓冲区的大小;
b设置最大缓冲帧数;
C获得视频缓冲区的总大小;
d清空视频缓冲区;
e设置视频缓冲区的初始状态为空。 步骤(3)初始化视频流解压和显示的参数的具体流程步骤如下
a设置输入视频的压縮标准;
b设置输入视频的帧率;
C设置视频解压输出格式;
d设置视频解压输出分辨率;e获得视频显示缓冲区的大小。
视频缓冲区由连续的帧缓冲区组成,可由二维的数组bffur[a][b]来实现,a代表缓冲的 最大帧数,b表示帧缓冲区的字节数。定义一位数组state[a],数组中的元素表示每个帧缓冲 区的状态,元素值为一时,相应的帧缓冲区内有完整帧,元素值为零时相应的帧缓冲区内没 有完整帧。由于视频数据接收并缓冲任务和视频数据解压并显示任务都对视频缓冲区进行操 作,为了避免竞争,可采用基于信号量的同步方法。
传输层所传输的信息包括视频帧数据和控制信息。为适应不同的网络, 一个大的视频帧 可能会被拆分成几个数据包,分别加上控制信息进行传输。其中,控制信息包括如下几个字 段KeyPacket、 TotalPacket、 PacketNum、 FrameCheckSum、 TermID、 FrameNum、 FrameLen。 各个字段的含义如下
KeyPacket:当前传输层包在所属帧中是否是最后一帧。为1,是最后一包;为0,不是 最后一包。
Total Packet:当前传输层包所属帧包含的总传输层包数。 PacketNum:当前传输层包在所属帧中的序号。
FrameCheckSum:当前传输层包所属帧所有视频信息字节的奇偶校验信息。 TennID:监控终端的ID号。
FrameNum:当前传输层包所属帧的帧编号。从0到255循环编号。 FrameLen:当前传输层包所属帧中所有视频信息的长度,以字节为单位。 视频数据接收并缓冲任务完成从传输层链路接收视频数据包、解析控制信息来判断帧合 法性、并完成最后组帧的功能。
图2给出了视频接收任务的流程图,步骤如下 a开始;
b等待接收视频数据包;
c是否是传输层测试数据包?如果是,转到下一步,否则,转向步骤e; d发送响应数据包到终端,转向步骤b;
e接收数据包的帧序号是否在帧序号窗内?如果是,转到下一步,否则,转向步骤b; f该帧序号是否大于缓冲区中队尾帧的帧序号?如果是,转到下一步,否则,转向步骤
g是否有空的帧缓冲区存放该数据包?如果是,转到下一步,否则,转向步骤b;
h根据接收数据包帧序号找到接收数据包应该存放的帧缓冲区位置; I根据包序号存放数据包到帧缓冲区内的相应位置; j更新队尾帧序号,转到步骤n;
k该帧序号是否小于缓冲区中队首帧的帧序号?如果否,转到下一步,否则,转向步骤
b;
1根据接收数据包帧序号找到接收数据包应该存放的帧缓冲区位置;
tn根据包序号存放数据包到帧缓冲区内的相应位置;
n该帧是否完整?如果是,转到下一步,否则,转向步骤b;0该帧缓冲区状态位置位,转向步骤b。
视频数据解压并显示任务从视频缓冲区中获取完整的数据帧,进行译码和显示。该任务 中实现了的校验窗的算法,校验窗的大小可根据丢帧和逆序的严重程度进行选择。 图3给出了视频数据解压并显示任务的流程,步骤如下 a开始;
b缓冲区是否为空?如果否,转向下一步,否则,转向步骤b; C队首帧是否完整?如果否,转向下一步。否则,转向步骤n; d该帧是否是缓冲区内的唯一一帧?如果否,转向下一步,否则,转向步骤b;
e校验窗中是否有完整帧?如果否,转向下一步,否则,转向步骤k; f计数器加一;
g计数器是否达到上限?如果否,转到下一步,否则,转向步骤i; h等待一段时间(时间段I ),转向步骤b; i计数器清零;
j丢弃队首帧,将队首移到下一帧,转向步骤b;
k等待一段时间(时间段n);
1队首帧是否完整?如果否,转向下一步,否则,转向步骤n; m丢弃队首帧,将队首移到第一个完整帧; n计数器清零;
o将队首帧复制到译码缓冲区; p该帧缓冲区状态位复位; q译码显示;
r队首移到下一帧,转到步骤b;
时间段I、计数器上限、时间段II的大小可以根据视频的帧率和客户端可容忍的时限大 小来确定。时间段I与计数器的乘积一般不大于帧间隔时间的70%,例如时间段I设为帧间 隔时间的10%,计数器上限设为6;时间段11一般设为帧间隔时间的30%。
远程控制任务实现对监控终端的远程控制。在窗口环境下,用户通过点击相应的控制按 钮来实现操作,远程控制任务根据用户的不同操作,向远程监控终端发送控制信息,如终端 开始和关闭的控制,云台的控制,视频压縮码率和帧率的控制等。当修改帧率时,需要对本 地的客户端译码参数进行修改。
图4给出了的远程控制任务流程,步骤如下-
a开始
b等待用户操作信息;
c是否是修改帧率操作?如果是,转到下一步,否则,转到步骤e;
d修改本地译码的帧率参数设置;
e将用户操作信息转化为远程控制信息;
f发送控制信息到终端,转向步骤b。
权利要求
1. 一种用于实时视频监控的客户端实现方法,包括视频缓冲步骤、视频接收步骤、视频解压步骤及控制指令步骤;视频缓冲步骤将接收到的数据包在连续的帧缓冲区内进行组帧和缓冲,并在缓冲区中形成一个帧队列;视频接收步骤从网络接收视频数据包,解析数据包中的控制信息,并采用帧序号窗算法来判断数据包的合法性,将合法的数据包放入帧队列的队尾,当帧缓冲区内的帧完整时,置位该帧缓冲区状态位;视频解压步骤按照校验窗算法从帧队列的队首取完整帧进行译码显示,当帧缓冲区的数据被取走或者丢弃时,复位该帧缓冲区状态位;控制指令步骤接收用户的操作信息,并根据用户的操作对监控终端进行远程控制;具体的流程如下(1)初始化视频缓冲区并设置视频缓冲区参数;(2)创建网络套接字并进行初始化;(3)初始化视频流解压和显示的参数;(4)创建并开启以下任务a视频数据接收并缓冲任务;b视频数据解压并显示任务;c远程控制任务。
2. 根据权利要求1所述的用于实时视频监控的客户端实现方法,其特征是,所述流程步骤(l)初始化视频缓冲区并设置视频缓冲区参数的流程为a设置帧缓冲区的大小;b设置最大缓冲帧数;C获得视频缓冲区的总大小;d清空视频缓冲区;e设置视频缓冲区的初始状态为空。
3. 根据权利要求1所述的用于实时视频监控的客户端实现方法,其特征是,所述流程步骤(3)初始化视频流解压和显示的参数的流程如下a设置输入视频的压缩标准;b设置输入视频的帧率;C设置视频解压输出格式;d设置视频解压输出分辨率;e获得视频显示缓冲区的大小。
4. 根据权利要求1所述的用于实时视频监控的客户端实现方法,其特征是,所述流程步骤(4)中视频数据接收并缓冲任务的流程如下a开始;b等待接收视频数据包;c是否是传输层测试数据包?如果是,转到下一步,否则,转向步骤e;d发送响应数据包到终端,转向步骤b;e接收数据包的帧序号是否在帧序号窗内?如果是,转到下一步,否则,转向步骤b;f该帧序号是否大于缓冲区中队尾帧的帧序号?如果是,转到下一步,否则,转向步骤k;g是否有空的帧缓冲区存放该数据包?如果是,转到下一步,否则,转向步骤b;h根据接收数据包帧序号找到接收数据包应该存放的帧缓冲区位置;I根据包序号存放数据包到帧缓冲区内的相应位置;j更新队尾帧序号,转到步骤n;k该帧序号是否小于缓冲区中队首帧的帧序号?如果否,转到下一步,否则,转向步骤b;1根据接收数据包帧序号找到接收数据包应该存放的帧缓冲区位置;m根据包序号存放数据包到帧缓冲区内的相应位置;n该帧是否完整?如果是,转到下一步,否则,转向步骤b;O该帧缓冲区状态位置位,转向步骤b。
5. 根据权利要求1所述的用于实时视频监控的客户端实现方法,其特征是,所述流程步骤(4)中的视频数据解压并显示任务的流程如下a开始;b缓冲区是否为空?如果否,转向下一步,否则,转向步骤b;c队首帧是否完整?如果否,转向下一步,否则,转向步骤n;d该帧是否是缓冲区内的唯一一帧?如果否,转向下一歩,否则,转向步骤b;e校验窗中是否有完整帧?如果否,转向下一步,否则,转向步骤k;f计数器加一;g计数器是否达到上限?如果否,转到下一步,否则,转向步骤i;h等待一段时间(时间段I ),转向步骤b;i计数器清零;j丢弃队首帧,将队首移到下一帧,转向步骤b;k等待一段时间(时间段n):1队首帧是否完整?如果否,转向下一步,否则,转向步骤n;m丢弃队首帧,将队首移到第一个完整帧;n计数器清零;o将队首帧复制到译码缓冲区;p该帧缓冲区状态位复位;q译码显示sr队首移到下一帧,转到步骤b,
6. 根据权利要求1所述的用于实时视频监控的客户端实现方法,其特征是,所述流程步骤(4)中的远程控制任务的流程如下a开始;b等待用户操作信息;c是否是修改帧率操作?如果是,转到下一步,否则,转到步骤e;d修改本地译码的帧率参数设置;e将用户操作信息转化为远程控制信息;f发送控制信息到终端,转向步骤b。
7. 根据权利要求1所述的用于实时视频监控的客户端实现方法,其特征是,所述帧序号窗是以缓冲区中队尾帧的帧序号为参考点,前后一段帧序号的范围,该范围根据网络的时延大小和最大帧序号的值来确定,设为最大帧序号的5%~20%,只有接收到的数据包的帧序号在帧序号窗内并且大于缓冲区中队首帧的帧序号,数据包才是合法的,合法的数据包按照帧序号和包序号存入对应的帧缓冲区内,否则予以丢弃,如果新接收到的数据包中包含的帧序号在帧序号窗范围之内,并且大于队尾的帧序号,则以此新接收到的帧序号为队尾,相应的帧序号窗也向前滑动。
8. 根据权利要求1所述的用于实时视频监控的客户端实现方法,其特征是,所述校验窗算法是首先以队首帧为校验窗的起点,检测队首帧是否完整,如果完整,则把队首帧提交译码,校验窗向后滑动一帧,继续进行;如果队首帧不完整,则依次检测校验窗内其他帧是否完整;如果不存在完整帧,则等待一段时间,记为时间段I,重复轮询检测,直到计数器到达上限,丢弃队首帧,校验窗向后滚度一个帧的长度继续检测;如果校验窗内存在完整帧,说明这一完整帧前面所有的不完整帧都发生了逆序或者丢包,此时等待一段时间记为时间段II,然后再检测队首帧是否完整;如果完整,表明巳修复了该帧的逆序,提交译码并跳到下一帧,校验窗向前滚动一帧,继续进行;如果队首帧仍然不完整,则判定其为丢包造成的丢帧,直接放弃并将队首移到第一个完整帧,提交译码,滑动校验窗,重新开始。
9. 根据权利要求8所述的用于实时视频监控的客户端实现方法,其特征是,所述时间段I与计数器的乘积不大于帧间隔时间的70%,时间段II为帧间隔时间的30%。
全文摘要
本发明提供了一种用于实时视频监控的客户端实现方法,包括视频缓冲步骤、视频接收步骤、视频解压步骤及控制指令步骤;视频缓冲步骤将接收到的数据包在连续的帧缓冲区内进行组帧和缓冲,并在缓冲区中形成一个帧队列;视频接收步骤解析数据包中的控制信息,并采用帧序号窗算法来判断数据包的合法性;视频解压步骤按照校验窗算法从帧队列的队首取完整帧进行译码显示;控制指令步骤接收用户的操作信息,并根据用户的操作对监控终端进行远程控制。本发明在保证实时监控的前提下,最大化的消除了网络逆序和丢包对图像质量的不利影响,提高了图像的清晰度,流畅度和分辨率,在网络条件不好的情况下,兼顾了客户端的图像质量和实时性。
文档编号H04N7/26GK101510999SQ200910014708
公开日2009年8月19日 申请日期2009年2月24日 优先权日2009年2月24日
发明者石祚夫, 种衍林, 管章玉, 全 苗, 袁东风, 恺 赵, 飞 陈, 斌 魏 申请人:山东大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1