版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
视频监控系统的客户端设计摘要随着人们对平安的需求日益强烈,视频监控系统作为一种平安防范的有效手段,越来越受到各界的广泛关注。且随着信息、网络、通信及多媒体等技术渗透到人类生活的各个领域的同时,视频监控也开始走进人们的生活,对视频监控的研究由此成为热点。基于嵌入式的网络数字视频监控技术与互联网有机结合,且融合了信息技术、计算机技术、网络技术以及流媒体技术,己成为监控领域的一个开展趋势。因此嵌入式网络数字视频监控软件的研究将有着广阔的应用前景和巨大的社会效益及经济效益。文章的核心内容是客户端软件系统的设计与实现。本文基于面向对象的设计思想和模块化的软件设计思想对客户端软件系统进行了模块的划分和细化,依次介绍了各子系统的设计和主要功能函数的设计,其中包括以下重要内容:网络客户端登陆;网络客户端视频预览;网络客户端视频下载;网络客户端视频播放。文章中的视频监控系统客户端的编程实现使用VC++语言开发,结合视频标准的相关知识,并且采用海康威视的采集卡和开发包。本文涉及的工作是对监控中心的实现进行研究和实践,它提出的设计思想和实现方式有一定代表性,对相关领域的设计是具有一定借鉴意义的。关键词:视频监控,客户端,视频预览,视频下载AbstractAspeopleincreasinglystrongdemandforsecurity,VideoSurveillanceasasafeandeffectivemeansofpreventionisbecomingmoreandmorepublicattention.Withtheinformation,network,communicationsandmultimediatechnologiespermeateallareasofhumanlife,videosurveillancehasalsobegunintopeople'slives。VideoSurveillanceisbecomingahotspot.Basedonembeddeddigitalandnetwork,videosurveillancetechnologycombinetheInternetandtheadvancedinformationtechnology,computertechnology,networktechnologyandstreamingmediatechnology.Videosurveillancehasbeenbecomingatrendinthemonitoringfield.Therefore,digitalvideosurveillancesoftwareembeddednetworkresearchwillhavebroadapplicationprospectsandenormoussocialandeconomicbenefits.Thecorecontentofthearticleistheclientsoftwaresystemdesignandimplementation.Basedonobject-orienteddesignandmodularsoftwaredesignsoftwareontheclientsystemandrefiningdivisionofthemodule,inturn,introducedthevarioussubsystemsofthedesignandmainfunctionsofthedesignfunction,includingthefollowingkeyelements:NetworkClientLogin;NetworkClientmaininterfacedesign;maininterfaceofthesystemsettings;videofileplayback;videofileretrieval.ThevideosurveillancesystemclientprogramminguseVC++means.Combinedwithknowledgeofvideostandards,skilleduseofDirectX,andusingHikvisioncapturecardandDevelopmentKit.Thisworkinvolvedmonitoringcenteristherealizationofresearchandpractice,itraisesthedesignandimplementationmethodshavesomerepresentationonthedesignofrelatedfieldsisacertainreferencesignificance.Keywords:VideoSurveillance,Client,VideoPreview,VideoDownload目录摘要IAbstractII1绪论11.1课题背景及意义11.2监控系统的开展历程11.3视频监控系统的现状和开展方向31.4论文内容42视频监控系统介绍52.1视频监控系统的开发环境5视频监控系统播放器开发硬件环境5视频监控系统播放器开发操作系统选择5视频监控系统播放器开发工具选择62.2视频监控系统简介62.3视频监控系统客户端介绍7用户登录功能8视频预览〔实时监控〕功能8视频下载功能8视频播放功能93视频监控系统客户端分析与设计103.1系统总体功能需求103.2系统客户端函数设计10客户端函数说明11客户端函数调用顺序说明133.3客户端关键技术14基类CVideoCaptureCard的设计14关键类DownloadThread的设计154视频监控系统客户端的开发实现174.1客户端登录174.2视频预览184.3视频文件的下载204.4视频文件播放265全文总结和展望285.1全文总结285.2下一步工作展望29参考文献30致谢311绪论1.1课题背景及意义随着国民经济和科学技术的开展以及人民生活水平的提高,人们对日常工作的条件和环境的要求也在不断增加。这种情况下,对于以往一些工作环境恶劣,地理位置较远或者有可能危及人身健康甚至生命的场合,采用无人职守作业的需求就日益突出了。无人职守作业已经成为许多行业的迫切需要。鉴于现今各行业的平安要求,如果每天二十四小时派人去进行现场值班工作既浪费人力物力财力,也不便于管理和处理突发情况,所以用于远程的视频监控系统的设计就被提出。通过公用或者专用网络,将远程现场展现在远端控制中心值班人员面前或者对远程现场情况进行实时录像。开发具有这样功能的一个监控系统,可以大大提高系统的工作效率,减少开销,确保平安。将系统稍作改动,也可用于其它远程监控现场的应用。这些年,随着国民经济的开展,视频监控系统的应用已经越来越广泛。视频监控系统以其直观、方便、信息内容丰富等特征而被广泛应用于工业生产、交通等场所。它正从传统的安防监控向管理、生产监控开展,并逐步与管理信息系统相结合,到达资源共享,为管理者提供更直观、更有效的决策信息。课题主要目的是开发出一套可靠性高、价格较低、使用简便的网络视频监控系统,适用于中小型企业应用。1.2监控系统的开展历程视频监控的开展经历了三个不同阶段,即第一代模拟图像监控,第二代基于PC机的多媒体监控,第三代基于嵌入式网络视频效劳器技术的网络视频监控。20世纪90年代初及其以前,主要是以模拟设备为主的闭路系统,称为第一代视频监控系统,即模拟图像监控系统。典型的模拟监控系统一般由图像摄影局部(模拟摄像机、镜头,云台、麦克风等)、图像传输局部(电缆、光缆、射频)、视频控制局部(操作键盘、视频分配器、视频矩阵切换器、云台控制器、字符叠加器等)和显示记录局部(视频矩阵,监控器,录像机等组成)组成。最简单的监控系统是由一架摄像机和一台监视器组成,中间用传输线连接。第一代系统的主要优点是实现方法简单。但是,其缺点非常明显[3]:它采用同轴电缆传输,传输距离近,布线复杂,设备、材料费用高,施工困难;另外,由于视频图像是模拟的,图像数据量大,录像时间短,而长时间录像时录像机存储丧失的信息多、由于模拟信号很容易受到干扰,导致图像质量差;其顺序存储的方式又使得查询速度慢;扩展能力差,如果要新增监控点,往往是牵一发而动全身,新的设备很难添加到原有的系统中。20世纪90年代中期,计算机处理能力的提高和视频技术的开展尤其是视频压缩编解码技术的出现和开展,使数字视频的存储和传输成为可能。人们利用计算机的高速数据处理能力进行视频的采集、显示、压缩等处理,利用显示器的高分辨率实现图像的多画面显示,采用大容量的计算机硬盘存储视频数据,从而大大提高了图像质量,增强了视频监控的功能。这类系统即第二代基于PC机的多媒体监控系统。第二代系统由于需要利用专用压缩/解压卡对视频信号进行压缩和解压处理[4],所以使监控系统体积较大,功耗较高;监控现场需要专人职守,维护烦琐;实时性不高和稳定性差;本钱较高;可扩展性差,采用专用的压缩卡和解压缩卡对视频数据进行压缩和解压缩,只能支持一种编码格式,无法提供对其他编码方式的支持。随着芯片、网络技术的进步,现在出现了一种新型的网络视频监控系统,即第三代基于嵌入式网络视频效劳器技术的网络视频监控系统。基于嵌入式网络视频效劳器技术的网络监控系统主要的原理是:采用嵌入式实时多任务操作系统,高效压缩芯片和功能强大的CPU,将视频压缩与传输处理工作全部内置到芯片上。网络上用户可以通过专用软件或者直接用浏览器观看Web效劳器上的摄像机图像,授权用户可以控制摄像机云台镜头的动作和对系统配置进行操作。采用嵌入式操作系统,大大提高了系统的稳定性和实时性。由于这种系统的硬件是一个同处理器和操作系统捆绑较为紧密、功能专一、设计专门的独立的设备,不像插卡系统那样受通用计算机系统中其它软硬件的影响,因此性能上更稳定,且便于安装、维护,易于实现系统的模块化设计,便于管理维护。硬盘录像和回放根本上可以到达实时的效果且录像清晰度较高。把视频压缩和网络传输功能集成到一个体积很小的设备内,可以直接连入以太网,到达即插即用,省掉各种复杂的电缆,安装方便,无需专人职守。在监控终端,远程监控人员只需要拥有一台安装了监控软件的PC机,无需安装特殊的硬件设备,就可以在世界任何一个可以接入Internet的地方,对监控现场进行实时远程监控。大大降低了系统本钱,极大地方便了整个监控系统的操作和维护。这种架构开展较晚,但由于其显著的优点即将在市场上取得大规模的应用。1.3视频监控系统的现状和开展方向在国内外市场上,主要推出数字控制的模拟视频监控和数字视频监控两类产品。前者经过几十年的开展,技术已经非常成熟,其性能稳定,在实际工程中有十分广泛的应用,特别是在大、中型视频监控工程中的应用尤为广泛。但是由于对图像的处理和传送均采用模拟技术,不仅图象质量低,而且系统资源浪费严重,不易组成复杂的网络结构,监控功能可扩展性差。随着数字技术的迅猛开展,网络技术的不断开展和进步,图像信息的数字编码处理模式的不断增加,使新一代数字视频监控系统日益显示出其独特的魅力。近年来国际标准化组织〔ISO〕、国际电工委员会〔IEC〕为数字图像的处理和传输建立了一套国际统一的相关标准,如MPEG-1、MPEG-2、MPEG-4等数字视频编解码标准,为数字视频监控建立了国际统一的技术标准,更加促进了该类系统的产业化开展。数字视频监控系统解决了模拟系统局部弊端,但仍需进一步完善和开展。目前,视频监控系统正处在数控模拟系统与数字系统混合应用并将逐渐向数字系统过渡的阶段。前端一体化、视频数字化、监控网络化、系统集成化是视频监控系统公认的开展方向,而数字化是网络化的前提,网络化又是系统集成化的根底,所以,视频监控开展的最大两个特点就是数字化和网络化。数字化:数字化是21世纪的特征,是以信息术开展的必然,数字化是迈向成长的通行证,随着时代的开展,我们的生存环境将变得越来越数字化。视频监控系统的数字化首先应该是系统中信息流〔包括视频、音频、控制等〕从模拟状态转为数字状态,这将彻底打破“经典闭路电视系统是以摄像机成像技术为中心”的结构,根本上改变视频监控系统从信息采集、数据处理、传输、系统控制等的方式和结构形式。网络化:视频监控系统的网络化将意味着系统的结构将由集总式向集散式系统过渡。集散式系统采用多层分级的结构形式,具有微内核技术的实时多任务、多用户、分布式操作系统,以实现抢先任务调度算法的快速响应。视频监控系统的网络化是远程视频监控系统今后开展的主要目标之一,系统网络化将实现整个网络系统硬件和软件资源共享以及任务和负载共享。提高网络的利用效率,这也促使视频监控系统成为新的网络应用热点。1.4论文内容本文内容安排如下:第一章绪论。了解课题开发背景及意义,并介绍了视频监控的开展历程及趋势。第二章视频监控系统系统介绍。首先了解课题的开发环境,随后介绍课题开发的视频监控系统,并详细介绍论文有关的客户端设计。第三章视频监控系统客户端分析与设计。给出了系统的结构方案设计,重点介绍了系统的根本设计思想以及视频播放解码CVideoCaptureCard类的设计;第四章视频监控系统客户端的开发实现。编程实现客户段用户登录、视频预览、视频下载播放三个功能;第五章论文最后对课题进行了总结,并作了展望。2视频监控系统介绍视频监控中心配备一台视频监控平台,可同时支持多个远端编码器,在视频监控平台中集成了多路视频解码单元,直接把管理员选择的线路图像传递到电视墙。配备一台或多台数字录像效劳器,作为整个监控系统的录像及点播效劳器。配置一台网管效劳器,提供全程网管效劳,同时提供WEB效劳,桌面终端可以通过以太网访问任意线路的监控图像,并可通过授权进行远程遥控。2.1视频监控系统的开发环境视频监控系统播放器开发硬件环境表2SEQ表格\*ARABIC\s11开发环境根本配置类别标准配置计算机硬件CPU英特尔®酷睿双核2内存2显卡支持HDMI高清宽屏液晶显示视频采集卡支持多路〔16-64〕视频信号的同时采集显示器支持高清的液晶电视标准输入输出设备,如键盘、鼠标CD-ROM或DVD-ROM驱动器软件操作系统:Windows2000/XP及以上版本网络通信TCP/IP网络其它视频监控系统具体配置取决与实际应用的需要。视频监控录像系统通常均为多路输入系统,视频采集卡可采用多卡方式,也可采用单卡方式。一般说,单卡方式集成度高,稳定性会优于多卡方式。目前市场上也有为追求高帧数而设计采用多卡进行迭加的多路单卡设备,但其仍在计算机的总线上进行传输、处理,不可能会有质的飞跃。视频监控系统播放器开发操作系统选择视频监控系统应采用Windows2000/XP及以上版本,该系统是一个32位的操作系统,具有强大的多媒体处理能力,并且能够很好地支持各种网络协议以及硬件的即插即用、抢占式多任务功能。Windows2000系统经过微软公司地不断改良和完善,现在已经是一个比拟完善和稳定的操作系统,在PC市场上有广泛的应用。视频监控系统播放器开发工具选择目前软件开发工具种类有很多,我们选择Microsoft的VisualC++6.0作为开发工具。因为这种开发工具和操作系统都出自同一家软件公司,有利于系统集成,有利于系统的稳定;同时VisualC++具有很好的执行效率,支持多线程,对多媒体有很强的支持能力,并能够很好地对硬件进行各种操作。选用VisualC++一个很重要的原因就是其具备面向对象开发特征,面向对象的设计方法是近年来开展起来的一种新的程序设计技术,其根本思想是将软件系统所面对的问题,按其自然属性进行分割,按人们通常的思维方式进行描述,建立每个对象的模型和联系,设计尽可能直接、自然地表现问题求解的软件,整个软件系统只由对象组成,对象间联系通过消息进行。用类和继承描述对象,并建立求解模型,描述软件系统。对象是事物的抽象单位,具有内部状态、性质、知识和处理能力,通过消息传递与其它对象相联系,是构成系统的元素。消息是请求对象执行某一处理或答复某些信息的指令流,用以统一数据层和控制层,将对象划分为不同层次,这种层次结构具有继承性,子类继承其父类的全部描述。面向对象的设计方法,更接近于面向问题而不是对程序的描述,软件设计带有智能化的性质,这种形式更便于程序设计人员与应用人员的交流,软件设计更具有普遍意义,尤其是在地理信息系统的智能化和专家系统技术不断提高的形势下,面向对象的程序设计是更有效的途径,因此在我们的设计工作中我们主要应用了面向对象的设计方法。2.2视频监控系统简介系统包含显示模块、录像存储及回放模块、网络支持模块,IP视频信号支持模块,硬解码模块,云台控制模块,设备管理模块,用户管理模块,日志管理模块,报警联动模块,矩阵级联模块。在目前的道路交通监控系统中,对视频监控信号的显示多数采用电视墙的形式。随着监控摄像头数量的增加,视频信号的路数也大幅度的增加,所以不可能将所有的视频信号同时显示在电视墙上,必须选择切换信号。因此,针对目前的这种情况,对于现在新上的和一些需要更新的监控系统,更合理和经济有效的方法是采用大屏幕的液晶或者等离子显示器,将多路信号同时在一个大屏幕上显示。图2.1视频监控系统框架要实现应用大屏幕对多路信号的显示,需要开发全新的软件系统。软件系统需要解决的一个难点问题是:目前监控摄像头的视频信号的比例大都是4:3的,而大屏幕的液晶或等离子显示器的比例是16:9的,因此当在大屏幕上显示单个或者其他多个视屏信号时〔如4个、9个、16个等〕的时候,视频信号直接铺满全屏显示就会出现拉伸形变现象,所以必须对多路的输入信号进行切分及合成处理,如图1中所示的16路信号。2.3视频监控系统客户端介绍客户端可以是监控子网〔监控中心所处的局域网称为监控子网〕或者企业MIS网甚至Internet上的任意一台机器。本论文主要涉及视频预览、视频检索下载及视频文件播放模块。用户登录功能用户登录即位系统权限用户为进入谋一项应用程序而进行的一项根本操作,以便该用户在该系统上的相应操作。用户登录功能可以有效的区分操作人是该程序的用户还是非用户,有利于保障双方权益。☉输入正确的用户名和密码。☉系统验证成功进入功能界面。☉用户根据自己权限进行某些操作。2.3.2视频预览〔实时监控〕功能主要实现通道的视频显示,录像,抓图,云台控制,退出,切换显示方案等功能。画面中最下面一行分为退出,切换显示方案,切换画面,全屏,录像,抓图。点击不同的画面按钮,即可实现相应的画面显示。☉提供1/4/8//16多分屏画面显示。☉单画面/多画面切换、可以显示任意画面组合。☉自定义镜头分组或者选择预定义镜头组,根据分组镜头数自适应画面分割。☉以当前分辨率手动截图。☉可修改截图路径和截图文件名称。☉本地手动录像。☉可修改手动录像路径和手动录像文件名称。☉可支持广域网、有路由器的网络环境。2.3.3视频下载功能首先检索要下载的视频文件。检索分为检索条件,检索结果两局部。检索条件有三项,时间,通道,事件。可以设定检索的起始时间,通道名称,事件等。检索结果显示在检索结果列表框中。☉按照时间,通道,事件等条件检索视频文件。☉执行、停止或删除下载任务。☉显示下载任务当前状态。☉设置下载文件存储路径。☉下载失败后可屡次重连。☉保存下载任务列表。2.3.4视频播放功能翻开视频播放器VideoPlayer,选择下载的视频文件即可播放,也可对视频文件进行剪切,操作和效劳端的操作一样。☉翻开视频播放器VideoPlayer。☉选择下载的视频文件即可播放。3视频监控系统客户端分析与设计3.1系统总体功能需求本视频监控系统是一个集实时数据传输处理和信息管理于一身的综合应用系统。系统不仅需要能满足远程用户浏览实时视频、历史录像,控制云台,处理音频报警信息等根本要求,而且需要管理用户登录信息,设置不同的用户权限,进行录像管理,修改视频效劳器参数等。这里并不一一详述功能需求,只做一个简单归纳。图3.1系统总体结构示意图本文所涉及的客户端系统功能有四大局部:客户端用户登录、视频预览、视频文件下载、视频播放。3.2系统客户端函数设计客户端的软件设计主要包括客户端用户登录、视频预览、视频文件下载播放三大局部。客户端函数说明1.BOOL__stdcallMP4_ClientStartup(UINTnMessage,HWNDhWnd);对客户端初始化。返回TRUE表示成功,返回FALSE表示失败。nMessage表示对应接收程序的消息。hWnd表示应用程序窗口句柄。注:在调用所有其他客户端函数之前调用。2.BOOL__stdcallMP4_ClientStartCapture(LONGStockHandle);开始客户端的数据捕获(回调方式,使用MP4_ClientStart中的ReadDataCallBack函数)。StockHandle:MP4_ClientStart成功返回的值。返回TRUE表示成功,返回FALSE表示失败。3.BOOL__stdcallMP4_ClientStartCaptureFile(LONGStockHandle,LPTSTRFileName);开始客户端的数据捕获(直接写文件方式)。StockHandle:MP4_ClientStart成功返回的值。FileName:文件名。返回TRUE表示成功,返回FALSE表示失败。4.BOOL__stdcallMP4_ClientAudioVolume(WORDwVolume);设置当前播放器音量。返回TRUE表示成功,返回FALSE表示失败。wVolume:音量值(0-0xffff)5.BOOL__stdcallMP4_ClientAudioStart(LONGStockHandle);选定某个播放器播放声音,其他播放器静止。返回TRUE表示成功,返回FALSE表示失败。StockHandle:MP4_ClientStart成功返回的值。6.BOOL__stdcallMP4_ClientSetBufferNum(LONGStockHandle,WORDwBufNum);增加接收缓冲区大小。StockHandle:MP4_ClientStart成功返回的值。wBufNum:增加缓冲区个数,0-50。返回TRUE表示成功,返回FALSE表示失败。说明:WBufNum值每增加1,表示接收缓冲区增加1帧的数据量。如果以5帧/秒的帧率播放,那么WbufNum=5,表示增加了5帧的缓冲区。7.BOOL__stdcallMP4_ClientSetPlayDelay(LONGStockHandle,WORDDelayLen);接收多少数据后才开始播放。StockHandle:MP4_ClientStart成功返回的值。DelayLen:预先接收的数据量。单位:K。范围:0-600返回TRUE表示成功,返回FALSE表示失败。8.BOOL__stdcallMP4_ClientSetQuality(LONGStockHandle,WORDwPicQuality);设置图象质量。StockHandle:MP4_ClientStart成功返回的值。wPicQuality:图象质量。LOWQUALITY表示低图象质量,HIGHQUALITY表示高图象质量。返回TRUE表示成功,返回FALSE表示失败。说明:设置图像质量,当设置成高质量时画面效果好,但CPU利用率高。在支持多路播放时,可以设为低质量(LOWQUALITY),以降低CPU利用率;当某路放大播放时将该路设置成高质量(HIGHQUALITY),以到达好的画面效果。9.BOOL__stdcallMP4_ClientSetCapPicCallBack(LONGStockHandle,void(CALLBACK*CapPicFun)(longStockHandle,char*pBuf,longnSize,longnWidth,longnHeight,longnStamp,longnType,longnReceaved));设置抓图回调函数。StockHandle:MP4_ClientStart成功返回的值。10.BOOL__stdcallMP4_ClientSavePicFile(char*pBuf,longnSize,longnWidth,longnHeight,longnType,char*sFileName);将抓图得到的图像数据保存成BMP文件。pBuf,nSize,nWidth,nHeight,nType同抓图回调函数中的参数。sFileName要保存的文件名。最好以BMP作为文件扩展名。返回TRUE表示成功,返回FALSE表示失败。说明:保存函数需要占用的较多cpu资源,如果不需要保存图片,那么不要调用。客户端函数调用顺序说明客户端必须开始使用网络开发包时,调用MP4_ClientSetNetPort,之后调用MP4_ClientStartup;在结束使用网络开发包时,调用MP4_ClientCleanup。以下函数在只能MP4_ClientStart之前调用:MP4_ClientSetShowMode;MP4_ClientSetTTL;以下函数在只能MP4_ClientStart之后调用:MP4_ClientStartCapture;MP4_ClientStartCaptureFile;MP4_ClientAudioStart;MP4_ClientAudioVolume;MP4_ClientSetBufferNum;MP4_ClientSetPlayDelay;MP4_ClientSetQuality;MP4_ClientSetCapPicCallBack;MP4_ClientSavePicFile;其他函数可以在MP4_ClientStartup之后,MP4_ClientCleanup之前的任何地方调用。3.3客户端关键技术图3.2解码流程图基类CVideoCaptureCard的设计classCVideoCaptureCard{public:virtualintInitDSPs()=0;virtualintDeInitDSPs()=0;virtualintGetTotalChannels()=0;virtualintGetDecodeChannelCount()=0;virtualHANDLEChannelOpen(intiChannel)=0;virtualintChannelClose(intiChannel)=0;virtualintStartVideoPreview(intiChannel,HWNDWndHandle,RECT*rect,intFrameRate,VideoPreviwModeiPreviwMode)=0;virtualintStopVideoPreview(intiChannel)=0;virtualintCaptureOriginalImage()=0;virtualintSetVideoFileTimeLength(floatfTimeLength)=0;virtualintSetVideoQuality(intiChannel,VideoQualityvideoQuality)=0;virtualintStartVideoCapture(intiChannel,CStringstrFilename)=0;virtualintStopVideoCapture(intiChannel)=0;virtualintSetVideoPreviewDatetime(intiChannel,boolbShowDatetime)=0;virtualintSetVideoPreviewDisplayInfo(intiChannel,CStringstrDisplayName,boolbShowDatetime,VideoPreviwModeiPreviwMode)=0;virtualint SetInputVideoPosition(intiChannel,UINTx,UINTy)=0;virtualintSetPreviewOverlayMode(boolbTrue)=0;virtualintSetOverlayColorKey(COLORREFDestColorKey)=0;virtualvoidStartServer()=0;virtualvoidStopServer()=0;};3.3.2关键类DownloadThread的设计classCDownloadThread:publicCWinThread{ DECLARE_DYNCREATE(CDownloadThread)protected: CInternetSessionm_InternetSession; CFtpConnection*m_pFtpConnection; CFilem_File; CStringm_strResult;voidDownloadFile(CString&source,CString&dest);//Attributespublic: CDownloadThread();//protectedconstructorusedbydynamiccreationvirtual~CDownloadThread(); CWndm_wndDummy;//Operationspublic: BOOLm_bTransferFailed; DWORDm_dwTransferType; BOOLCreateLocalDirectory(LPCTSTRlpszDirectory);voidWaitForProgressDialog(); CWnd*m_pTransferManager; CStringm_strCurrentDirectory; CStringGetLastError(); CStringArraym_strLocalNames; CStringArraym_strRemoteNames; CStringm_strLocalName; CStringm_strRemoteName; CStringm_strPassword; CStringm_strUserName; CStringm_strServerName;int m_nRetries;int m_nRetryDelay;int m_nPort;int m_bUsePASVMode; DWORDm_nConnectionTimeout; DWORDm_dwFileLength;virtualvoidDelete(); HANDLEm_hEventDead; HANDLEm_hEventKill;voidKillThread(); CProgressDlgm_ProgressDlg;charm_szStatus[1024];//Overrides//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CDownloadThread)public:virtualBOOLInitInstance();virtualintExitInstance();//}}AFX_VIRTUAL//Implementationprotected: BOOLm_bDirectoryCreated;voidPostDownloadStatus(LPCTSTRlpszStatus); DECLARE_MESSAGE_MAP()};4视频监控系统客户端的开发实现4.1客户端登录填写正确的用户名,密码。点击【确定】,即可进入客户端。如果用户名或者密码不正确,那么弹出提示对话框。intnResponse=0;CDlgLogindlgLogin;boolbLogin=false;while(!bLogin) {nResponse=dlgLogin.DoModal();if(nResponse==IDOK) {if(!ConnectDatabase(dlgLogin.m_strServer,"sa",dlgLogin.m_strDBPWD,"db_supervision")) {AfxMessageBox("ErrorOpenDatabase!");returnfalse; }//CheckUserNameandPasswordCStringstrRS=_T("select*fromtblUserwhereuser_name='");strRS+=dlgLogin.m_strUser;strRS+="'andpassword='";strRS+=dlgLogin.m_strPWD;strRS+="'";CADORecordsetadoRS(m_pAdoDB);adoRS.SetQuery(strRS);adoRS.Open();CStringstrName;if(adoRS.GetRecordCount()==0) {AfxMessageBox("UserNameorPasswordIncorrect!"); }else {bLogin=true; } }elseif(nResponse==IDCANCEL) {returnFALSE; }登录界面设计:图4.1网络客户端登录界面4.2视频预览主要实现代码:CLiveVideoDisplayWindow::CLiveVideoDisplayWindow(CVideoCaptureCard*pVideoCaptureCard,CLiveVideoDisplayScheme*pLiveVideoDisplayScheme,CRectm_rectTotalDiplayRegion,MultiWindowiSubRectsNumber) :CMultiDisplayRect(m_rectTotalDiplayRegion,iSubRectsNumber){ m_pVideoCaptureCard=pVideoCaptureCard; m_pLiveVideoDisplayScheme=pLiveVideoDisplayScheme;m_iTotalChannels=m_pVideoCaptureCard->InitDSPs();m_iTotalChannels=m_pVideoCaptureCard->GetTotalChannels();m_iTotalChannels=16;m_iFisrtDisplayChannel=0;}CLiveVideoDisplayWindow::~CLiveVideoDisplayWindow(){ m_pVideoCaptureCard->DeInitDSPs();}voidCLiveVideoDisplayWindow::StartVideoPreview(HWNDhwnd){for(inti=0;i<GetSubRectsNumber();i++) {intiChannel=(m_iFisrtDisplayChannel+i)%m_iTotalChannels; CRectrect=GetSubWindowRect(i);floatiRatio=1.0*rect.Width()/rect.Height(); VideoPreviwModeiVideoPreviwMode=VPM_STRETCH;if(iRatio>1.4) { { iVideoPreviwMode=VPM_SOURCE_RATIO; } } m_pVideoCaptureCard->StartVideoPreview(iChannel,m_pHandle[i],GetSubWindowRect(i),30,iVideoPreviwMode); }}voidCLiveVideoDisplayWindow::StopVideoPreview(){for(inti=0;i<GetSubRectsNumber();i++) {intiChannel=(m_iFisrtDisplayChannel+i)%m_iTotalChannels;m_pVideoCaptureCard->StopVideoPreview(iChannel); }}voidCLiveVideoDisplayWindow::SetFisrtDisplayChannel(intiFisrtDisplayChannel){ m_iFisrtDisplayChannel=iFisrtDisplayChannel;}voidCLiveVideoDisplayWindow::SetHandle(intiSubWin,HWNDhandle){ m_pHandle[iSubWin]=handle;}客户端主界面设计如下列图:图4.2网络客户端主界面视频显示区域为图4.2中的红色方框的区域。视频显示控制区域为。点击相应的按钮,视频显示区域分别显示1,4画面。点击相应的按钮,可以进行上下翻页。4.3视频文件的下载voidCClientSourceDlg::DoFileDownload(BOOLbShowFileDialog){//reloadsetting CStringstrPath; GetSettingFile(strPath);ReadSettingFromFile(strPath); CListBox*pListBox; CStringstrFile,strFileWithPath,strPlayer; pListBox=(CListBox*)GetDlgItem(IDC_LIST_SEARCH_RESULT);intindex=pListBox->GetCurSel();if(LB_ERR==index) {return; }//getselecteditemsintnIndex=pListBox->GetCurSel();intnCount=1;//notmulti-selection BOOLbYesToAll=FALSE;//downloaditemsif(nIndex!=-1) {//getfilename pListBox->GetText(index,strFile); CStringstrLocalName;if(bShowFileDialog) { CFileDialogdlg(FALSE,"264",StringOrderDisplay2File(strFile),OFN_NOVALIDATE|OFN_HIDEREADONLY,"VideoFiles(*.264)|*.264||",this); dlg.m_ofn.lpstrTitle="Downloadto";if(dlg.DoModal()==IDOK) { strLocalName=dlg.GetPathName(); }else {//canceledreturn; } }else { strLocalName="\\"+strFile; }intnResult=IDYES;//Aquick'n'easywaytoseeifafileordirectoryexists. DWORDdwAttributes=GetFileAttributes(strLocalName); DWORDdwSize=GetFtpFileLength(StringOrderDisplay2File(strFile)+".264");if(PathFileExists(strLocalName+".264")) { CStringstrMessage="要下载的文件已经存在,是否重新下载?";if(AfxMessageBox(strMessage,MB_YESNO)==IDYES) DownloadFile("/"+StringOrderDisplay2File(strFile)+".264",dwSize,strLocalName+".264"); }else { DownloadFile("/"+StringOrderDisplay2File(strFile)+".264",dwSize,strLocalName+".264"); } } }//连接FTP效劳器,得到文件长度intCClientSourceDlg::GetFtpFileLength(CStringstrFile){ CInternetSession*m_pInternetSession; CFtpConnection*m_pFtpConnection; m_pInternetSession=newCInternetSession("",1,PRE_CONFIG_INTERNET_ACCESS);intnTimeout=30; m_pInternetSession->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,nTimeout*1000); m_pInternetSession->SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT,nTimeout*1000); m_pInternetSession->SetOption(INTERNET_OPTION_SEND_TIMEOUT,nTimeout*1000); m_pFtpConnection=m_pInternetSession->GetFtpConnection(m_strVideoFileServerIP,m_strVideoFileServerUser,m_strVideoFileServerPassword,m_nVideoFileServerPort); CFtpFileFindftpFind(m_pFtpConnection); BOOLbContinue=ftpFind.FindFile(strFile);//strSearchDir);if(bContinue){ ftpFind.FindNextFile(); DWORDdwSize=ftpFind.GetLength(); CStringstrFilename=ftpFind.GetFileName();returndwSize;}else{return0;}}//下载文件voidCClientSourceDlg::DownloadFile(LPCTSTRlpszFileName,DWORDdwFileLength,LPCTSTRlpszDestination){//SynLocalVideoFilenameList2DB(); CDownloadThread*pThread; pThread=newCDownloadThread;if(pThread!=NULL){ ASSERT_VALID(pThread);//CreateThreadinasuspendedstatesowecansetthePriority//beforeitstartsgettingsawayfromus...if(!pThread->CreateThread(CREATE_SUSPENDED)){deletepThread;return;}//setprioritytonormalfornow...VERIFY(pThread->SetThreadPriority(THREAD_PRIORITY_NORMAL));//initializethread pThread->m_strServerName=m_strVideoFileServerIP; pThread->m_strUserName=m_strVideoFileServerUser; pThread->m_strPassword=m_strVideoFileServerPassword; pThread->m_strRemoteName=lpszFileName; pThread->m_strLocalName=lpszDestination; pThread->m_strCurrentDirectory="/"; pThread->m_dwFileLength=dwFileLength; pThread->m_dwTransferType=2; pThread->m_nRetries=3; pThread->m_nRetryDelay=10; pThread->m_nConnectionTimeout=30*1000; pThread->m_nPort=m_nVideoFileServerPort; pThread->m_bUsePASVMode=0;pThread->m_pTransferManager=this; pThread->ResumeThread(); }}CStringCClientSourceDlg::StringOrderFile2Display(CStringstrFileName){//Getdatetime CStringstrDatetime,strDate,strTime; strDatetime=strFileName.Mid(strFileName.ReverseFind('_')+1); strDate=strDatetime.Left(8); strTime=strDatetime.Mid(8);//Getchannelname CStringstrChannelName; strChannelName=strFileName.Left(strFileName.Find('_')); CStringstrChannelNumber; strChannelNumber=strFileName.Mid(strFileName.Find('_')+1); strChannelNumber=strChannelNumber.Left(strChannelNumber.Find('_')); strChannelNumber=strChannelNumber.Mid(2); CStringstrOrderChange; strOrderChange.Format("%s-%s-%s%s:%s:%s%s%s", strDate.Left(4),strDate.Mid(4,2),strDate.Mid(6,2), strTime.Left(2),strTime.Mid(2,2),strTime.Mid(4,2), strChannelName,strChannelNumber);returnstrOrderChange;}默认视频文件检索所有效劳器上所有的视频文件,也可以组合选择时间、通道和事件关键字进行检索。如默认检索。图4.3视频文件检索双击选中的视频,双击或者选择“下载”按钮,弹出“下载到“窗口,如图4.4:图4.4视频文件保存点击“保存”,开始下载,下载显示下载进度,如图4.5。图4.5视频文件下载4.4视频文件播放播放器的显示局部,主要采用了DirectDraw技术。目前使用了两种方式显示画面:1、创立使用off_screen画面并Blt〔位转换货位传输,可做缩放、旋转、镜像等效果〕到主画面;2、创立使用OVERLAY画面。下面介绍videoplayer中用到的主要函数:1、BOOLHik_PlayM4_InitDDraw(HWNDhWnd);说明:初始化DirectDraw外表。在使用vb,delphi开发时请注意,它们生成的对话框具有WS_CLIPCHILDREN窗口风格,必须去掉这种风格,否那么显示画面会被对话框上的控件覆盖。输入参数:hWnd应用程序主窗口的句柄。2、BOOLHik_PlayM4_RealeseDDraw();说明:释放directDraw外表。3、BOOLHik_PlayM4_OpenFile(LONGnPort,LPSTRsFileName);说明:翻开播放文件;输入参数:sFileName文件名,文件不能超过4G或小于4K;4、BOOLHik_PlayM4_CloseFile(LONGnPort);说明:关闭播放文件;5、BOOLHik_PlayM4_Play(LONGnPort,HWNDhWnd);说明:播放开始,播放视频画面大小将根据hWnd窗口调整,要全屏显示,只要把hWnd窗口放大到全屏。如果已经播放,只是改变当前播放速度为正常速度。输入参数:hWnd播放视频的窗口句柄。6、BOOLHik_PlayM4_Stop(LONGnPort);说明:播放结束7、BOOLHik_PlayM4_Pause(LONGnPort,DWORDnPause);说明:播放暂停/恢复:输入参数:nPause=TRUE暂停;否那么恢复;8、BOOLHik_PlayM4_Fast(LONGnPort);说明:快速播放,每次调用将使当前播放速度加快一倍,最多调用4次;要恢复正常播放调用Hik_PlayM4_Play〔〕,从当前位置开始正常播放;\图4.6视频播放器VideoPlayer5全文总结和展望5.1全文总结本文首先介绍了课题背景,对视频监控系统的开展历程和现状进行了概述,指出网络视频监控系统的开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新小区物业承包合同示例
- 2024系统开发合同
- 2024年餐厅租赁合同模板
- 2024分期付款购买合同
- 文化节庆活动赞助协议
- 2025年会计专业考试高级会计实务试卷及解答参考
- 排水箱涵劳务分包合同2024年
- 城市管道天然气特许经营合同
- 抚养权变更协议模板2024年
- 协商一致解除劳动合同书样本
- 新苏教版五年级上册科学全册教学课件(2022年春整理)
- 小学体育水平一《走与游戏》教学设计
- 秋日私语(完整精确版)克莱德曼(原版)钢琴双手简谱 钢琴谱
- 办公室室内装修工程技术规范
- 盐酸安全知识培训
- 万盛关于成立医疗设备公司组建方案(参考模板)
- 消防安全巡查记录台帐(共2页)
- 科技特派员工作调研报告
- 中波广播发送系统概述
- 县疾控中心中层干部竞聘上岗实施方案
- 急性心肌梗死精美PPt完整版
评论
0/150
提交评论