智能楼宇系统中的软件化网络视频监控服务器

来源:网络  作者:网络转载   2019-09-22 阅读:98
摘要: 本文配合智能楼宇系统集成软件的开发,针对具体应用系统的特点,开发了基于软件的网络化视频监控服务器服务程序和客户端软件,文中详细论述了基于程序的软视频服务器的基本原理,并给出了具体的软件实现。 关键词:视频监控 视频服务器 TCP/IP协议 组播 1、引言 视频监控是智能楼宇系统中的重要组成部分,对于加强内部和外部人员的管理,应付突发事件、安全防盗和事故追踪等方面都有着重要的作用[1]。随着Intertnet的飞速发展,视频监控的网络化也成为主要的技术发展趋势。实现网络监控,可以使用户不受地点的限制而方便地进行远程监控。实现监控网络化后,用户机只需安装普通的浏览器即可实现远程监控,而无须安装客户端程序,大大简化系统的安装和实现。目前实现网络化视频监控的方案主要有两种:第一种,使用专用的嵌入式的视频服务器,比如荷兰的AXIS2400[2](四通道MpegI格式)、台湾一硕产的(单/双/四通道,Mpeg4格式)[3]等。第二种就是使用程序实现的软件视频服务器[4]。两种方案各有千秋,前一种需用专门硬件设备,开发周期短,画面质量高,但成本费用高,灵活性低,尤其是与不同视频监控主机的通信连接仍然需要软件配合;相比之下采用程序实现的软件化视频服务器成本低,灵活性高,可以方便满足用户提出的各种需求,但同时开发周期相对要长。本文配合智能楼宇系统集成软件的开发[5],针对具体应用系统的特点,开发了基于软件的网络化视频监控服务器服务程序和客户端软件,文中详细论述基于程序的软视频服务器的基本原理,并给出了具体的软件实现。 2、系统结构及功能概述 应用系统硬件结构如图1所示。网络化视频监控系统是在传统视频监控的基础上,通过串口通信控制视频监控矩阵主机进行通道切换,选择指定的监控画面,再经视频捕捉卡捕捉、软件压缩,再通过web服务传送到网络上的远程客户程序,远程客户端浏览器借助下载的Java小程序实现解压、回放。 图1 应用系统硬件结构图 应用系统软件结构如图2所示。视频服务程序调用图像卡供应商提供的的DLL库采集视频流数据,然后调用JPEG库将采集到的DIB图像压缩为JPEG图像,再通过UDP协议的WinSocket套接字发送给客户。视频服务程序与客户端的交互是借助于运行在客户端的JavaApplet小程序实现的。JavaApplet内嵌在网页中,当用户访问系统时,JavaApplet小程序随同html文件下载到客户端并由IE浏览器解释执行。当用户在切换摄像头时,JavaApplet将选中的摄像头位号提交给视频服务程序。视频服务程序通过RS-232串口通信将切换报文发送给AD196矩阵切换机,由AD196进行视频通道的切换。 在应用系统中使用的矩阵切换机为AD196,该机有8个RS-232控制端口。操作内容包括:摄像机监视器的切换、巡视、序列控制、PTZ(云台)控制和报警接口等。RS-232端口接收的控制命令均为ASCII码。为了保证云台运动的连续实时性,指定动作的ASCII码及紧随的终止符最少必须发送5次,重复发送直到动作取消,为了确保动作的连续平滑,必须以每秒钟15次的速率发送。 图2 系统软件结构框图 另外,在系统的实现中使用JPEG标准进行图像压缩而不采用MPEG标准是基于如下原因考虑的。由于系统使用基于TCP/IP协议进行网络传输,并且采用基于UDP协议的组播方式。而TCP/IP的网络传输存在网络阻塞、数据丢失等隐患。由于MPEG压缩标准进行帧间压缩,发送的只是帧间的差值。若网络发生阻塞,丢失了一帧信息,后面的帧将无法正确恢复,只有重新传输上一帧。这无疑会产生很大延时,无法满足监控系统实时性的要求。JPEG标准只对每一帧图像进行压缩,各帧之间不进行帧间压缩。这种方式的数据量较MPEG方式有所增加但是增加的数据对系统性能的影响不是很大,如:图像卡采集的图像为320×240、RGB24位的DIB图像,经过压缩每帧图像的数据大概为5Kb,发送的帧率按15帧/s计算,每秒的数据量为75kb/s,从结果可以知道并不会占用太多的带宽。另外,更重要的一点是,采用JPEG进行网络传输时,如果出现网络短暂阻塞,可将当前的帧抛弃而不影响下一帧的图像恢复,因而能够保证监控系统实时性的要求,而对于监控系统的图像传输来说,实时性是第一位的。 3、TCP/IP协议及IP组播 网络通信的方法主要有:基于TCP或UDP协议的点对点式、基于UDP协议的广播和组播。其中TCP协议是面向连接的,在交换数据前,通信主机和客户机间必须建立连接。另外,TCP协议提供差错校验、丢帧重发等传输机制,这些特性使得TCP协议可以提供高可靠性的数据传输。同时,这些特点又带来一些负面影响:占用较多的系统资源,特别是面向多连接的应用时,频繁的建立连接会占用大量的系统资源,在遇到网络阻塞时,数据帧的丢失会导使不断地重发丢失数据,使得数据传输的实时性大大降低。所以,TCP协议一般应用于对数据可靠性要求很高,而对实时性的要求相对不高的情况下。UDP协议与TCP协议不同,是不面向连接的。由于取消了差错校验、丢帧重发机制,因而提供的服务是不可靠的,但是其快速性则提高。还有一点重要的是,UDP协议支持IP组播,这就为单点对多点或多点对多点实时数据传送提供了可能。 图 3单播和多播 在本系统中,由于监控系统对实时性的要求高,需要连续传送的图像信息量很大。如果采用点对点的方式,对每帧图像服务器都必须向每个连接的客户机发送一次,数据的发送量和响应时间都与客户的数目成正比,使得服务器不能及时响应客户端的请求,同时占用了网络带宽,使系统整体效能将大大降低了。而采用基于UDP协议的IP组播方式可以很好的解决这个问题。IP组播是指在互联网上对一组IP站点同时进行数据传送,发送方只需发一次数据,加入组播组的客户机都能接收到数据报。每一个站点都可以动态的加入或退出该组播组。IP组播允许一点对多点或多点对多点通信。单播和组播的比较如图3所示。在IPv4中使用D类IP地址,它动态分配和恢复地址范围是224.0.0到239.255.255.255。其中224.0.0.0到224.0.0.255为局部联接多播地址。当需要将多播范围扩展到广域网时,需要有路由器转发多播数据。同时需要使用Inernet组管理协议(IGMP)。WINSOCK2系统中提供了对IP多播的支持,它是一个与协议无关的、具有实时网络传输能力的网络接口。WINSOCK多播模型中定义了数据面和控制面的概念。控制面决定一个多播组建立通信的方式,数据面决定通信成员间数据传输的方式。两平面均采用“无”根模式,任一用户所发送的数据都将被传送到组中所有的成员。数据报的发送者需指定一个多播地址为目的地址,向该多播地址发送数据即可。数据的接收者可以通过分组原地址端口来区别发送源。 在系统实现时,采取了一些有效的措施以提高系统整体的效率和效能。为了保证服务器端和客户端传递握手信号和控制命令的可靠性,采用可靠的TCP协议,以确保客户端的请求能够准确地到达服务器端并得到响应。在实现时,为了提高系统资源的使用效率,采用请求——应答的方式:每当新客户欲查看监控图像时,必须向服务器发出请求,服务器将该客户加入用户使用纪录表里;在客户端离开多播组时也必须发出离开信息,服务器实时更改用户使用纪录表,以便能够准确地了解当前客户的情况,合理分配系统资源。为了减少客户间的冲突,视频服务程序为每个视频通道分配一个组播地址,查看同一通道的客户加入到同一组播组,如果切换到其它通道,则必须先离开当前的多播组,然后加入新的多播组。 4、软件实现 系统的网络服务部分的程序框图如图4所示。其中,主线程始终在侦听客户端的请求,为每一个新的联接请求创建一个接受线程。接受线程负责与其对应的客户端进行数据通信。 与AD196通信的部分代码如下: 1)切换摄像机图像到当前的视频通道。发送切换视频通道报文“*Ma”,“*”号代表所选定的视频通道;发送切换摄像机报文“*#a”,“*”号代表选定的摄像机。 … … // 发送切换Camera报文 // 1. select channel DataSnd = strMonNum + "Ma"; m_SASComm.SetOutput(COleVariant(DataSnd)); //将Cstring型赋给COleVariant, //以文本形式发送数据 // 2. select camera DataSnd = strCamNum + "#a"; m_SASComm.SetOutput(COleVariant(DataSnd)); … …. 2)控制云台运动。串口发送云台运动报文,例如云台向左转报文“2La”。 // 控制云台向左 void CAVDlg::OnPanleft() { // TODO: Add your control notification handler code here m_BPanLeft.flag = 1; //向左转的标志 CString DataSnd; if (m_SASComm.GetPortOpen()) { DataSnd = "2La"; //以2级的速度向左转 m_SASComm.SetOutput(COleVariant(DataSnd)); } if (m_BPanLeft.flag = 0) { DataSnd = "0La"; //发送停止向左转的命令 m_SASComm.SetOutput(COleVariant(DataSnd)); } } 图4 网络服务程序框图 5、结束语 本文所介绍的视频服务器系统已成功用于某供电公司调度大楼的智能楼宇集成系统中,并取得了较好的效果。客户浏览器显示的图像较流畅,局域网条件下图像帧率可达到10-15帧/秒,而且可以同时满足多个客户的连接请求。本系统开发环境为Visual C++6.0,运行的平台为windows2000professial /天敏SDK2000图像采集卡。由于本系统的灵活性高,系统的可扩展性高,如可方便地增加图像监视报警等功能。 参考文献 1、刘富强著. 数字视频监控系统的开发及应用 机械工业出版社 2003. 2、《AXIS 视频服务器管理手册》,瑞典AXIS公司。 3、《台湾一硕PIXORD系列视频服务器手册》,南京数怡通科技有限公司 4、张有为. 多组IP组播在视频监控系统中的应用. 计算机应用 2003.5 5、王选龙等. 智能建筑物信息管理系统中的系统集成软件开发 工业控制计算机 2003.11 6、美]Beau Williamson 著 顾金星等译. IP组播网络设计开发(第一卷)[电子工业出版社 7、(美) Douglas E. Comer著 .用TCP/IP进行网际互联 -电子工业出版社 8、王险峰, 刘宝宏编著 .Windows环境下的多线程编程原理与应用 清华大学出版社
标签: 楼宇
打赏

免责声明:
本站部份内容系网友自发上传与转载,不代表本网赞同其观点;
如涉及内容、版权等问题,请在30日内联系,我们将在第一时间删除内容!

购物指南

支付方式

商家合作

关于我们

微信扫一扫

(c)2008-2018 DESTOON B2B SYSTEM All Rights Reserved
免责声明:以上信息由相关企业或个人自行免费发布,其真实性、准确性及合法性未证实。请谨慎采用,风险自负。本网对此不承担任何法律责任。

在线咨询

在线咨询:

QQ交流群

微信公众号