基于C/S模式的远程网络视频监控系统的设计和实现
2022-11-24刘艳
刘艳
燕京理工学院,河北廊坊,065000
0 引言
2020年12月,交通运输部发布了最近一年的研究报告。该报告显示,2020年约有6万人丧命于各种各样的交通事故。如事故发生后,能够通过查看回放视频了解事故发生的现场情景,那么调查方就可以获取有力的办案证据,从而降低交通事故所造成的不良影响。而视频监控作为一种解决方案,可以监控和管理被关注的对象,实现对重大场景的还原。
视频监控系统在发展历史上经历了几个阶段,分别是:模拟视频监控阶段、数字化视频监控阶段和网络视频监控阶段,未来将向基于云计算和智慧化的视频监控系统的方向发展。
(1)模拟视频监控系统。该系统主要由监视设备、录像设备和摄像等模拟设备组成,同时,使用电缆或者光缆等介质传输模拟信号。这种监控系统具有以下缺点:不能实现与信息化系统进行数据交换、不良的可扩展性、有限的地理传输范围,以及只能在监控中心进行监控。
(2)数字化监控系统。随着计算机整体性能的增强,同时视频编码和压缩技术有了进一步发展,20世纪90年代中期出现了数字化监控系统。这种系统能够压缩处理采集到的模拟信号,视频图像质量得到显著提升。但具有有限的传输范围、高昂的建设成本以及不佳的可维护性等几个缺点。
(3)网络视频监控系统。20世纪90年代末,网络视频监控系统时代到来。它的优势有三点,分别是功能模块强大、扩展性和维护性较强。但是,存在以下几个缺点:视频编码方式使用动态图像标准编码(MPEG4),压缩率和图像质量都有待于进一步增强;使用未加密的文件格式在通道上直接传输视频流。
为解决上述视频监控系统的问题,本文提出一种基于客户端和服务器模式的网络视频监控系统。首先,为保障视频信息在通道上传输是安全的,在视频采集端,使用加密算法对视频信息加密后,发送至特定通道;在视频接收端,使用解密算法解密视频信息,能够保障传输过程的机密性和完整性。其次,改变视频的编码方式为H.264,一方面,可以增加数据压缩率,减少视频大小;另一方面,可以提高图像的质量。
1 相关工作
文献[1]提出了什么是网络视频监控系统的问题,对其特点及总体结构进行分析,最后对网络视频监控系统进行了设计,组成部分包括监控服务器和多个客户端。监控服务器的职责是对整个系统的视频数据进行处理和保存,客户端由台式机或笔记本电脑组成,在客户端上可以安装终端配套软件,负责显示服务器传输的视频图像。
文献[2]提出了一种视频监控系统的方案,在该设计方案中,系统的组成包括客户端、中心服务器和分析单元等多个设备。关键技术包括Xvid、TCP/RTP和DirectShow等,同时,还包括自动视频分析功能的关键技术和要求。
文献[3]使用Eclipse开发工具,基于安卓平台实现了手机端的视频监控系统。该文首先分析了系统开发的背景和意义。然后,给出整个系统的功能结构,包括服务端与客户端应该完成的功能模块。在系统实现环节,使用套接字技术在视频服务器和多个客户端之间进行数据传输。
文献[4]首先介绍了系统的功能需求以及如何在应用开发过程中实现这些需求。然后,使用Eclipse集成开发工具,基于安卓平台设计了一个网络视频监控系统,该系统能够访问视频服务器,并将接收到的视频信号进行转发。
文献[5]设计了一种实时监控系统,介绍了系统的功能结构,阐述了关键数据结构和算法的设计,并优化了实施传输协议RTP的方案。该系统使用个人计算机作为服务端,使用移动端的手机或者PAD作为客户端,测试系统在无线网络环境和移动网络下的运行情况。
文献[6]介绍了视频监控系统的系统架构的两种方案,阐述了如何在多个安卓设备之间进行视频监控,并在WIFI的环境下对系统进行了测试。通过对报告的分析,可以得出两种方案都能进行视频监控,然后对测试结果不同的原因进行了总结。
2 系统需求分析
需求分析主要解决系统做什么,定义了系统所需要完成的全部功能[7]。需求分析人员经过需求调研阶段,使用文档或者各种图形固化项目所需要完成的功能、性能和其他非功能需求等,将用户非形式化的需求描述转化为各个功能模块[8]。本节首先介绍了项目的开发背景,然后使用面向对象的方式进行系统的需求分析。
2.1 项目背景
某些保密单位在运输物资的过程中,管理员需要实时监控运输车的行驶轨迹和了解车内的情况。为了保障视频信息传输的机密性和完整性,需要在视频采集端加密采集的视频信号,视频收到后,解密收到的视频信号;需要实时采集车辆的运行轨迹,运输车出现交通事故时,可以定位车辆的地理位置,从而进行救援;需要采集运输车内的温度、湿度和速度等数据,以便及时了解车辆的运输场景。下文根据项目背景进行功能需求分析。
2.2 功能需求分析
UML(统一建模语言)是一种面向对象的建模语言,使用统一的符号进行建模,包括建立功能模型、对象模型和动态模型等[9]。可以在需求分析人员、系统设计人员、开发人员和测试人员等之间对系统的功能需求建立统一的认识,方便整个团队进行系统规划和设计。通过使用统一建模语言进行系统的功能需求分析,系统需要实现以下功能,如表1所示。
表1 系统功能清单
2.3 非功能需求分析
(1)客户端的界面的平均响应时间控制在1秒以内;
(2)最大并发用户数为200个终端用户。
3 系统总体设计
经过需求分析阶段,系统已经确定了需要实现的功能需求清单。在系统设计阶段,需要选择特定的平台、体系结构、关键的数据结构和算法来设计已确定的需求列表[10]。因此,在以下的篇幅中将对本系统进行设计,包括对硬件和软件平台分别进行设计。
3.1 硬件平台设计
在网络拓扑图中(图2),本系统主要由视频采集设备、视频接收设备、交换机、监控中心、监控终端和传输线路组成。在视频采集端,视频信号经过源端的硬件设备数据采集后,为提高数据传输的安全性,需要使用硬件模块,通过加密算法将视频信号进行加密,再使用特定的传输通道将加密后的视频传输到目标端的接收设备。在视频接收端,接收设备使用解密算法将视频信号解密。同时,服务端通过应用编程接口来读取信号,并转发给连接的客户端。
图2 硬件平台网络拓扑图
3.2 软件平台设计
在硬件平台设计完成后,接下来需要设计整个系统的软件平台。本软件系统平台使用客户端和服务器模式,这是一种在很多网络编程的场景中经常被使用的软件结构。在此结构中,服务器负责管理数据,执行后台服务,而客户端负责接收用户的交互请求,并将请求传输给服务器进行处理,完成后将数据返回给用户。
在接收端,接收硬件设备收到音视频后,对音视频信号使用解密算法进行解密,服务端通过视频图像的应用编程接口来实时获取视频信息,并将图像传输给所有连接的终端客户。对于终端客户,可以使用视频播放器对接收到的视频信息进行播放(图3)。
图3 软件处理流程图
4 系统实现
在系统实现的阶段,由开发人员通过编码和测试过程,将前一阶段系统设计的成果转化成实际的系统。主要任务包括:搭建系统开发环境、建立系统平台、进行数据库的设计、编写代码、单元测试、验收测试、试运行、系统上线和运维等。
4.1 服务端软件实现
C++是一种过程性和面向对象相结合的开发语言,在服务器的编程过程中,主要使用的就是C++语言,它具有程序结构清晰、可扩展性和可读性良好以及运行效率高的优点。客户端使用用户数据报协议和服务器进行通信;而服务器软件通过调用接收端硬件设备提供的应用编程接口来采集视频信号,然后将视频图像广播至所连接的终端用户(图4)。
图4 服务端软件流程图
4.2 客户端软件实现
客户端的编程语言使用C#,使用该语言的原因有几点:开发人员学习起来比较简单,学习周期比较短,开发门槛不高;该语言具有面向对象的特点,可读性比较强,在编程风格上可以一种容易理解的方式实现需求;最后,能够使用拖拉拽的方式来构建系统界面。客户端接收服务器传输的视频图像并在本地界面进行展示,其流程如图5所示。
图5 客户端软件流程图
其中,接收图像并设置图像的代码如图6所示。
图6 系统实现的部分代码
当用户输入登录信息,包括用户名和密码后,系统进入视频监控界面。其中,左边展现了所有安装的摄像头的列表,上面展现了功能菜单,包括音视频监控、产品简介、数据展示和实时定位等。当用户拖拽某摄像头到监控区域,可以查看实时监控的界面。
5 结语
本文提供了一种新颖的基于客户端和服务器模式的视频监控系统,和传统的网络视频监控系统相比,能够解决视频信号在数据传输过程中的安全性的问题。本项目经过开发和测试阶段,运行稳定,已经成功在客户的生产环境中发挥作用,可以为类似的应用场景的开发提供借鉴。下一步需要对客户端视频播放的算法进行优化,达到在网络环境一般的情况下,视频播放更加流畅的效果。