一种远程视频监控系统的实现

2010年08月01日 12:59    发布者:lavida
视频监控技术在政治、经济、军事、文化设施的安全防范中有着举足轻重的作用,随着多媒体和计算机网络技术的发展,视频监控系统经历了模拟监控和数字监控的发展阶段,目前已到了网络数字视频监控阶段。本文介绍的远程监控系统,可利用现有IP网络实现远程监控和控制摄像头的调焦、云台转动等,可满足无人值守的要求,实现了功能强大、易于操作的监控解决方案。

1 系统总体结构  

本网络远程监控系统由摄像机、网络视频服务器、网络远程客户端构成。前端将各个监控点所有视频、音频、报警等信号直接通过网络接入到监控中心,实现网络显示前端视频图像、录像存储、回放、云台控制等功能。本监控系统无论在本地还是网络控制端部通过网络传输视频图像。所有的操作和功能都是在管理计算机上安装监控软件来实现,如显示、录像、各种控制等。任一被授权的网络客户端能够通过网络平台实现对本地端的网络远程监看、录像存储、云台控制等操作,可实现权限管理。采用口前围际领先的H.264高压缩技术,大大提高压缩比及网络传输效果,每路均可 达到全实时显示/录像;自动适应带宽并配置资源,优化网络传输速度快,提高播放画质,减少网络延时;系统支持多个分控端对一个主控端的同时远程访问,或多个分控端对多个主控端同时远程访问,各点之间相互独立,互不干扰;可设置分控权限,通过不同密码使分控端享有不同操作权限,以区分管理层次,加强管理的安全性。  

2 网络视频服务器结构  

在本系统中选用的刚络视频服务器采用H.264硬件压缩技术,它集1路或4路音、视频采集、实时压缩、网络传输、联动报警等功能为一体,即插即看,用户可以利用客户端软件或IE浏览器直接通过Internet或局域网实时观看视频服务器传送的图像。  

每台视频服务器均有独立的IP地址,可同时接入4路视频信号和音频信号,经过处理后转换为IP包,利用宽带局域网和TCP/IP协议把这些数据包发送给监控中心的视频主机(PC机)或网上授权用户。视频主机上运行Client端监控软件,可实现1/4/9/16画面的实时视频监控,也可驱动显示器阵列进行大屏幕显示。其他授权用户可通过IE浏览器进行一般性的监看。  

3 系统软件结构设计  

本软件采用模块化程序设计及客户/服务器模式设计,模块间通过接口(函数调用)传递数据。  

3.1 服务器端软件结构  

服务器端软件主要由主控模块、视频采集模块、监视控制模块、系统设置/用户设置模块、信息查询模块、视频信息处理模块和网络传输模块构成。它主要实现多媒体数据的采集、压缩、回放、存储、发送、信息的处理和查询等功能。  

主控模块主要是控制各个模块的正常运行,对各个模块进行有效的管理,进行一些如初始化系统等必要的工作。  

为了减轻CPU负担,我们采用了硬件方式实现视频数据的采集和压缩。视频卡以每秒30帧来捕获动态图像。采集后的视频数据分为两路,一路直接送到显示缓冲区中进行本地显示,另一路则由硬件压缩后存储在本地硬盘上,或同时传输到客户端,从而实现视频图像的实时采集、传输与显示。  

监视控制模块的主要功能就是将各种前端的动作进行编码然后发送到前端,从而实现对前端摄像头的云台控制和镜头控制。  

在系统设置/用户设置模块中允许超级用户修改任意用户的密码,还可以增加用户、删除用户和给其他用户分配权限。系统共有三种权限级别可供选择:“系统管理员”、“普通管理员”、“普通操作员”。每一种级别都己经分配了默认的权限。  

视频信息处理模块包括视频文件的播放、存储、删除、抓图等子功能。  

信息查询模块主要包括视频文件、图片和日志的查询等功能。系统在保存视频文件时,以文件创建的时间作为文件名的一部分,并且不同的摄像机所摄的视频文件保存在不同的目录中。这样在文件列表中可以方便的实现按年、月、日、时间段及摄像机来查询视频文件。
  
网络传输模块可以使客户端软件能通过LAN或Internet共享主控服务器的信息,它是利用Socket为客户机和服务器程序提供不同的socket系统调用来实现信息共享的。  

3.2 客户端软件结构  

通过客户端软件分布在LAN或Internet上的远程客户机就可以实现视频信息共享和远程控制等操作。该部分采用C/S(客户/服务器)模式设计,其实现功能由客户端软件和服务器端软件中的刚络传输模块两部分共同完成。  

客户端软件上要包括主控模块、登录模块、播放模块、远程下载模块、实时传输模块、远程控制模块等。  

上控模块主要是控制各个模块的正常运行,对各个模块进行有效的管理,进行一些如初始化系统等必要的工作。  

登录模块主要是使用用户名和密码等方式使不同级别的用户拥有不同的权限,从而有效的实现安全控制,使非法用户不能进入系统。  

播放模块包括本地播放和远程播放等功能。视频文件的播放是采用DirectShow实现的,由过滤器表管理器自动生成过滤器表来播放视频文件。我们可以设计封装一个类CMediaPlay,在该类中封装许多函数,比如播放视频文件的PlayFromFile()函数,控制播放的PausePlay()、ResumePlay()、StopPlay()等函数。  

远程下载模块实现的主要功能是把远程服务器(主控机)上的视频文件等下载到本地客户端。  

实时传输模块主要功能就是把主控计算机实时采集的视频信号在基本不失真的情况下实时的传输到发出实时传输请求的客户端,并由播放模块显示出来。  

远程控制模块的主要功能是在客户端实现对主控服务器的部分控制。例如可以在客户端实现对云台和监控效果的设置。其设计思想是对控制内容进行分类编码,客户端在编码后边加上控制参数,然后把它传输到服务器端;服务器进程收到数据后,从中分解出编码和参数,然后调用相应的功能函数实现对目标的控制。在本模块中由于传输的是控制命令,为保证传输的可靠性,我们采用基于 TCP协议的面向连接的通信方式。为了避免控制冲突,本模块要求在任一时刻只允许一个用户对云台和监控效果实施控制。因此在服务器端,对于这一端口只接受一个用户的连接请求,一旦建立连接,则把在服务器端对这两个部分的控制功能置为无效状态;当断开连接后,再把它们恢复为有效状态。为避免客户端长时间处于控制状态而导致其他用户无法进入控制状态,在本模块中置有一个定时器。当连接建立时启动定时器,开始计时;当用户按动键盘或鼠标任一键时,计时器归零,重新开始计时;当计时器计到一定时间后,自动断开连接并关闭控制对话框。  

4 软件设计关键技术  

4.1 通信协议的选择  

TCP协议负责数据的流量控制,保证传输的正确性,具有数据重发功能,传输延迟造成抖动将使实时通信的质量严重下降,不适合实时通信。所以在INTERNET上传送多媒体信息时,采用的都是UDP/IP协议,而UDP和IP均不提供链接保证,数据传输的可靠性没有保障。所以这里采用了应用比较广泛的RTP/RTCP(实时传输协议/实时传输控制协议)。
  
RTP提供端对端网络传输功能,适合通过组播传送实时数据流,RTP报文格式中包括固定的RTP报文头、可选用的作用标识(CSRC)和负载数据。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制和拥塞控制,它依靠RTCP提供这些服务。RTCP包的数量占所有传输量的百分之五。  

在数据平面,服务器端将压缩打包后的音频、视频数据按照RTP的报文格式装入RTP报文的数据负载段,同时配置RTP报文头部的时间戳、同步信息、序列号等重要参数,此时的数据报文已经具有典型的时间特征,即被“流化”了。在UDP/TCP层,RTP报文作为负载数据装入UDP/TCP报文中,最后,由IP层负责最后的报文头部配置,实现网络传输。在客户端,实现方式相反,各网络层依次去除报文头部,并读取相关的控制参数和时间参数,最终获取可以实时播放的音频,视频数据。  

4.2 组播技术  

如果用单播传输技术来实现监控视频的多点传输,则需要在发送者和每个接受者之间占用单独的数据信道来传输数据量巨大的实时视频数据,这将导致发送者负担沉重、延迟长、网络拥塞。而采用广播又极易造成网络带宽的大幅占用,影响整个网络的通信效率。IP组播技术是目前能够最大限度地利用现有网络带宽资源的一种有效方法。  

组播指的是在Internet上对一组IP站点进行数据发送,所有加入该组的接收者都可以接收到该信息。这一组IP站点是动态形成的,每一个IP站点都是可以动态地加入或退出。每台主机可以同时加入到多个组中。IGMP,是IP组播通信专用的Internet组管理协议,用于管理组成员加入或脱离组播组。  

4.3 Winsock对组播技术的实现  

Winsock是一个基于socket模型的Windows API集,Windows Sockets API是Windows的网络程序设计接口,Windows Socket规范定义并记录了如何使用API与互联网协议簇链接,支持流套接字和数据套接字。应用程序调用Windows Sockets API实现相互之间的通信,Windows Sockets又利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。  

Winsock包括Winsock1和Winsock2两种类型,每一种类型都定义了一组应用程序IP组播接口函数,在实际的编程应用中。可通过Winsock提供的一系列应用程序接口来实现IP组播。本系统采用Winsock1实现IP组播通信,主要过程如下:  

(1) 用Socket函数创建一个数据报套接字;  
(2) 如果从组播组内接收数据,则利用Bind函数将套接字关联到一个本地端口上;这里要注意的是:不要采用小于1024的端口号,因为所有小于1024的端口号都被系统保留。在没有被别的程序使用的情况下,可以选择从1024到65535的端口。如果只发送数据,则不需要这一步;  
(3) 采用IP Multicast-TIL,调用setsocketopt函数殴置TIL;  
(4) 设置IP Add Membership选项和要加入的组播组地址结构,调用setsocketopt函数加入指定的组播组;如打算只发送数据,则不必加入一个播组;  
(5) 调用Sendto函数发送组播数据,调用RecvFrom函数接收组播数据;  
(6) 设置IP-Drop-Membership选项和要脱离的组播组地址结构,调用setsocketopt函数脱离指定的组播组。  

随着互联网技术的发展,人们对远程监控系统的图像和声音质量都提出了更高的要求,本系统不但能提供良好的画面质量,而且能提供音质极佳的声音,该系统具有结构合理、功能完善、运行可靠等特点,能够广泛应用于银行、仓库、居民小区等场合的安防监控和电力电站、电信基站等无人值守场合。