网络视频实时监控系统的设计与实现

网络视频实时监控系统的设计与实现

ID:33136829

大小:3.10 MB

页数:76页

时间:2019-02-21

上传者:U-22107
网络视频实时监控系统的设计与实现_第1页
网络视频实时监控系统的设计与实现_第2页
网络视频实时监控系统的设计与实现_第3页
网络视频实时监控系统的设计与实现_第4页
网络视频实时监控系统的设计与实现_第5页
资源描述:

《网络视频实时监控系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

密级:保密期限:硕士研究生学位论文题目:圆终塑麴塞吐堕控丕统数逡让皇塞理.学姓专导学号:Q22Q兰2名:渣晶晶业:让篡扭型堂皇垫苤师:塞茂强院:熬鲑堂陵2010年1月 ◆一●、独创性(或创新性)声明本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切相关责任。本人签名:途&照日期:翌fQ:3:翌关于论文使用授权的说明本人完全了解北京邮电大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存、汇编学位论文。本人签名:导师签名:漆蕊‰日期:尘【Q:三:坦日期:型里二!:显 ,簟A一■≤ 网络视频实时监控系统的设计与实现摘要随着计算机、网络、通信等多种技术的迅速发展,网络视频监控系统得到越来越广泛的应用,目前已渗透到教育、政府、娱乐场所、医院、酒店、运动场馆、城市治安等多种领域。但现有的网络视频监控系统存在对实时数据上传的管理不够精确与智能,对摄像头的自动化管理具有对设备的局限性,位于私有网络摄像头需要依靠出口路由器的配置才能在系统中使用等缺点。为满足日益广泛的用户需求,有必要开发一种新的网络实时监控系统。本文分析了网络视频监控系统的发展历程与现状,介绍了网络视频监控系统所使用的主要技术~流媒体技术与相关协议,提出了一种基于代理的网络视频实时监控系统结构,并着重介绍了该系统中目录服务器,代理服务器的设计与实现。本文的主要成果如下:i.解决了服务器对位于私有网络中摄像头的管理问题,使得服务器可穿越私有网络边界对其中的摄像头进行管理,无需再依赖出口路由器的配置。2.解决了对摄像头上传数据的自动化管理与配置问题,使得摄像头可根据用户观看情况自动开始或停止上传数据,并可根据配置文件更改上传内容与传输模式。3.解决了对系统中不同摄像头的适配与信息的自动管理问题,使得系统可兼容不同设备,并为所有摄像头提供一种自动注册机制。关键词:实时监控视频监控流媒体摄像头管理 一口,肛《I ●“,.DESIGNANDIⅣ田LEN匝NTATIONOFANETWroRKVDEOREALT】[Ⅳ匝MoNITORINGSYSTEMABSTRACTWiththedevelopmentofcomputer,network,communicationandothertechniques,networkvideomonitoringsystemiswidelyusedineducation,government,ammementplace,hospital,110tel,gymnasium,andpublicsecurity.Buttheexistednetworkvideomonitoringsystemhassomedisadvantagessuchasthemanagementofcal_Il_eras’uploaddataisnotaccurateandintelligentenough,theautomanagementofcamerasislimitedbyequipment,andtheUSeofcamerasinprivatenetworksdependsontheconfigurationoftheegressrouter.TosatisfythelargerequirementofUSerS,itisnecessarytodevelopanewnetworkreal—timemonitoringsystem.Inthisarticle,thedevelopmentandpresentsituationofnetworkvideomonitoringsystemarcanalyzedaswellasthestreamingmediatechniqueandtherelevantprotocolsareintroduced.Thearticleproposesanewnetworkvideoreal-timemonitoringsystembasedonproxyisproposed.Itintroducedthedesignandimplementationofcatalogserverandproxyserverindetails.劢eachievementsofthisarticleale:1.SolvetheproblemofmanagingtheCRlTlerasinprivatenetwork.neservercangetthroughthenetworkboundarytoaccesstheCameraswithoutdependingontheegressrouterconfigureanymore.2.Solvetheproblemofautomaticmanagementandconfigurationoftheuploaddata.111euploaddataCanautomaticstartorterminateaccordingtotheviewsituation.Also,theuploadcontentandtransmissionpatternCanbechangedbaseontheconfigurationfiles.3.Solvetheproblemofadaptionandautomaticmanagementofdifferentcameras.ThesystemCanbecompatiblewithkindsofCalTleras,andprovidesanautomaticregistermechanismforallcameras.Keywords:real—timemonitor,videomonitor,streamingmedia,cameramanagement 一IL—o● 目录第一章引言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..11.1课题背景⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..11.2研究现状与课题意义⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.21.3课题目标⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..31.4作者工作与论文结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.4第二章网络实时监控系统相关技术⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯62.1流媒体技术⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯62.2相关协议⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..72.2.1RTSP协议⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..72.2.2RTP/RTCP协议⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.82.2.3SDP协议⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯92.3达尔文流媒体服务器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯102.4本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.10第三章网络实时监控系统总体设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..113.1系统结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.1l3.2系统节点⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.133.3流媒体服务器的设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯143.3.1达尔文服务器对功能要求的满足⋯⋯⋯⋯⋯⋯⋯⋯⋯153.3.2达尔文服务器对性能要求的满足⋯⋯⋯⋯⋯⋯⋯⋯⋯163.4节点间数据交互与系统基本运行流程⋯⋯⋯⋯⋯⋯⋯⋯⋯.173.5本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.20第四章目录服务器的设计与实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.214.1目录服务器需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯214.1.1管理员需求说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..214.1.2用户需求说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.224.2目录服务器总体设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯224.3目录服务器模块详细设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..244.3.1用户管理模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯244.3.2摄像头管理模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.254.3.3告警管理模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯284.3.4摄像头观看模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.304.3.5代理接口子模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..344.4目录服务器实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.384.4.1数据访问层的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯384.4.2业务逻辑层的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯39 4.4.3接口层的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.404.5本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.42第五章代理服务器的设计与实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.435.1代理服务器需求分析⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..435.1.1摄像头的主动注册功能⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..435.1.2摄像头中继管理功能⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.445.1.3摄像头上传配置功能⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.445.1.4摄像头告警处理与转发功能⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.445.2代理服务器设计说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯445.2.1配置模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..455.2.2消息代理模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.465.2.3中继代理模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.495.3代理服务器的实现与系统测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.565.3.1配置模块与消息代理模块的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯565.3.2中继代理模块的实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.585.3.3系统测试结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.595.4本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.60第六章结束语⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..6l6.1论文工作总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯6l6.2问题与展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..62参考文献⋯⋯⋯⋯⋯⋯⋯⋯..⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..63致谢⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯65攻读学位期间发表的学术论文⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.66产¨'■户●t~_■ 北京邮电大学硕士学位论文1.1课题背景第一章引言网络实时监控系统是计算机、通信等多种技术相结合的产物,是基于IP网络,集成数据采集技术,视频音频编解码技术,流媒体技术、Web技术的一种崭新的应用系统。系统利用网络将分散、独立的图像采集点进行联网,实现跨区域的统一监控、统一管理、资源共享,为用户提供了一种全新的、直观的,扩大视觉和听觉范围的管理工到¨。当前,网络视频监控已渗透到教育、政府、娱乐场所、医院、酒店、运动场馆、城市治安等多种领域【2】。对于企业:银行系统可以通过网络视频监控对各营业网点及ATM机远程监控,以便及时发现异常情况并予以处理;无人值守机房可利用该平台,监控设备的运行情况,电源的使用情况等:超市或商场使用该系统对购物环境进行监控,可以及时应对突发事件,避免商家受到经济损失。对于个人:屋主可通过安装在自己家中的摄像头监视房屋安全情况;家属可通过病房摄像头探视病人;家长可通过部署在幼儿园,小学的摄像设备,随时观察到孩子的生活,学习状况;司机可通过安装在街道,立交桥的监控设备观察到路况,决定出行路线。总之,网络实时监控系统已经在我国的各个行业和领域得到了广泛的应用。网络视频监控的发展主要经历了两个阶段。第一阶段是半数字监控系统【31,系统在远端有若干个摄像机以及各种检测、报警探头等设备,它们获取的图像信息,通过各自的传输线路将图像的模拟信号汇接到多媒体控制主机上进行数字处理,然后再通过通信网络,将这些信息传送到用户。当多个接收端同时接收同一路图像时.需要建立多个数据通道,进行多次数据复制,大量相同的数据包在网络上传输,存在大量冗余信息。第二阶段为全数字网络视频监控【引。基于Web服务器/编解码器的网络化数字远程视频监控系统。视频从前端图像采集设备输出时即为数字信号,并以网络为传输媒介,基于国际通用的TCP/IP协议,采用流媒体技术实现视频在网上的多路复用传输。如果同时有多个用户访问同一个视频源,在监控点无需为每个用户建立单独的数据连接,直接从流媒体服务器转发。基于此种机制,在多用户并发访问时,可始终保持摄像头和流媒体服务器间只有一个图像带宽,减少对监控现场网络的冲击;同时,流媒体服务器处在高速网上,并且服务器的处理能力远远高于摄像头,可实现最大限度完成高速视频流的转发,保证图像质量。 北京邮电大学硕士学位论文1.2研究现状与课题意义现有实时网络监控系统一般由网络摄像头,流媒体服务器等节点通过网络互联组成【41,如图1一l所示。网络摄像头将采集的数据经压缩编码后传输至服务器,用户使用播放器向服务器请求媒体并进行观看。’图卜1现有监控系统网络结构图目前网络实时监控系统具有以下特点:1.媒体数字化【5】:视频与音频数据由以前的模拟状态转化为数字状态。高性能编码技术(如H.264,MPEG_4)的出现更是大大提高了音视频数据传输的效率,使得用户即使在带宽较低的情况下也能获得较好的图像质量。2.监控网络化【5】:通过网络连接,视频监控设备不用再集中一处,可以分布在各个不同区域,组成监控系统的硬件和软件采用标准化、模块化和系列化的设计,通过网络传输介质连接在一起,即可实现视频的网络化监控。网络化极大程度地打破了视频监控的区域限制,设备扩展的数量界限。3.对手机用户的支持:伴随3G技术的发展,3G网络突破了带宽限制的瓶颈【6】,使得手机监控成为现实。手机视频监控具备了良好的视频清晰度和实时性,其不但具备了固定线路视频监控的图像功能,还满足了用户随时随地远程观看实时监控视频的需求,实现了AnyTime、AnyWhere的视频监控。现有的网络实时监控系统中,摄像机与流媒体服务器间中继的管理一般具有种模式:第一种为不可控模式,摄像机一开机便会根据所配置的流媒体服务器地址主动传输图像,用户仅能通过开关摄像机控制数据的传输,无法进行远程控制。这样在摄像头长期无人观看的情况下会造成大量无用数据的传输。第二种模式为2一h0户 北京邮电大学硕士学位论文可控模式:用户可远程控制摄像头与流媒体服务器间的数据传输。该模式下用户通过操作流媒体服务器与摄像头间的RTSP会话实现数据传输的建立或拆除。但要实现该模式则对摄像头的位置有特定要求:摄像头必须位于流媒体服务器所能访问到的位置,一旦服务器无法访问到摄像头用户也就无法对其进行控制(例如服务器位于公网,而摄像头位于私有网络中)。并且现有的可控模式无法选择摄像头上传的媒体数据,若摄像头具有音频采集功能,则一般会将视频与音频数据一同上传至服务器,但对大多数用户来说,仅需要监控视频的观看即可,这就造成了网络带宽的浪费。另外,在系统中若要实现摄像头的自动化管理,则必须采用带有主动报到功能的摄像头。这种摄像头开机后能够周期性的向所配置的服务器地址发送报到信息,服务期利用这种周期性的消息可实现摄像头的自动注册与状态维护。但对于没有该功能的摄像头则需完全依靠管理人员手动管理设备信息:当系统中新添一个设备,必须有人通知管理员在系统中添加该设备的信息,若设备信息发生改变(如IP地址的改变),也必须及时通知管理员进行修改。这种手动管理的方式有诸多缺陷:消息通知不及时,人为输入的错误都将造成设备在系统中无法使用。另外由于这种非主动设备无法发送周期性的消息,系统无法维护设备的正确状态,若发生摄像头关机,或网络连接中断,系统都无法得知。基于上述问题,开发一个新的网络实时监控系统具有以下意义:1.系统的应用范围更加广泛:无论摄像头位于何处,只要能与Intemet连接,系统就能对其进行管理操作,同时对移动场景下监控视频的上传的支持可使系统用于车载等模式。2.更加智能化的设备管理:设备自动注册与更新,使得管理员不必再忙于修改系统数据,并避免了人为输入错误的可能。并且这种智能化的管理对所有摄像头都可提供,不再局限于主动式摄像头。3.最大限度降低网络流量:摄像头的数据传输仅在有用户观看时进行,并且管理员可根据需要决定摄像头上传的数据是否包括音频,这些机制尽可能的避免了无用数据的传输,节约了网络带宽资源。1.3课题目标本课题的目标为设计并实现一个网络实时监控系统,该系统除了实现现有网络监控系统所提供的基本监控视频播放功能以外,还具有以下功能:1.数据传输的自动控制:无论摄像头位于公网或私有网络,系统可对其到流媒体服务器间的数据传输进行控制。同时,这种控制由系统根据当前视频观看情况自动进行:当某摄像头第一次被用户请求观看时,系统建立相应摄像头到流媒3 北京邮电大学硕士学位论文体服务器间的数据传输。当某视频的最后一个用户停止对其观看时,系统停止相应摄像头到流媒体服务器间的数据传输。2.设备自动化管理:所有的摄像头首次连接到系统并开机后,可将相关信息,如口地址,MAC地址,RTSP端口号等自动注册到系统中;当摄像头信息有所变更时,系统会对相关记录进行自动更新;若摄像头与服务器连接正常并处于开机状态,系统会将摄像头维持在在线状态,若摄像头关机或与服务器的网络连接中断后,系统会将摄像头置为离线状态,由此提示用户该摄像头当前不可观看并提示管理人员对其进行检查维护。被动摄像头也可实现与主动摄像头一样的功能,无须管理员再对其信息进行手动管理。3.上传数据的可配置性:管理人员可根据实际情况配置某个摄像头上传至服务器的媒体中是否包含音频数据,并选择上传的传输机制。4.移动场景中监控视频的上传:摄像头只要能通过无线网络连接到Interact,就能像其他摄像头一样在系统中使用。5.短信通知告警信息:当前端设备所连接的报警探头检测到告警事件的发生后,系统将对该事件进行处理,并以短信方式通知相关用户。6.为服务提供商提供运营模式:系统通过对用户可看摄像头与用户问的关系管理,可为运营商提供按时观看的模式:对于仅有短期需求的用户,系统可按小时数对其提供观看。而对于有长期需求的用户,系统可按月,年提供观看。1.4作者工作与论文结构作者在工学硕士学习期间,全程参与了北邮3GPP应用实验室网络实时监控系统的设计和开发工作,主要负责网络实时监控系统的整体设计,目录服务器的设计与实现,代理服务器的设计与实现等工作。全文共分为六章:第一章引言,介绍了论文的背景,分析了相关领域的研究现状,阐述了课题的目标及意义。第二章相关技术,介绍了流媒体技术与相关协议,以及达尔文流媒体服务器。第三章系统总体设计,介绍了网络实时监控系统的整体架构,以及对达尔文流媒体服务器的研究。第四章目录服务器设计与实现,介绍了目录服务器的功能与设计,重点介绍了URL目录服务,设备自动发现,设备状态维护,中继自动管理,短信告警,4一h■声 北京邮电大学硕士学位论文用户观看管理等功能的设计与实现。第五章代理服务器设计与实现,介绍了代理服务器的功能与设计,重点介绍了代理服务器的私网穿透,被动摄像头信息,摄像头上传媒体选择等功能的设计与实现。第六章总结论文,并对系统可进行的改进进行展望。5 北京邮电大学硕士学位论文第二章网络实时监控系统相关技术为了提供实时的,清晰的视频监控服务,网络实时监控系统采用了多种网络传输技术,媒体处理技术。本章重点介绍了系统所采用的流媒体技术,相关协议,以及达尔文流媒体服务器。2.1流媒体技术流媒体技术的开发创意是从传统的TCP/IP协议对通过网络传送信息的控制方法中得到的。当通过TCP/IP协议下载文件时,服务器会按照一定的顺序将文件分成若干个独立的数据包,然后依次发送出去。而客户端的程序会将这些数据包重新组装起来,最终形成和原来完全一样的完整文件,这时才可以对这个文件进行任何可能的操作了。流媒体技术则不然,它能够按照特定的顺序将文件发送出去,播放程序无需等待整个媒体文件下载完成就可以一边接收数据一边播放17J,这大大减少了用户的等待时问。为了使播放更加稳定连贯,通常客户端会通过为接收数据开辟缓存区的方法【s】来解决网路拥塞的问题,只需要在数据缓存区充满前等待几秒钟就可以开始欣赏了。相比于将整个文件下载保存至硬盘,这也节省了播放文件所需的空问。这种在Internet/Intranet中使用流式传输技术的连续时基媒体就称为流媒体。流媒体技术并不是单一的技术,它融合了多种网络以及音视频技术。首先,普通的媒体文件或实时音视频信号必须经过处理后才能形成流媒体数据。对于文件,一般先采用高效压缩算法减小文件尺寸,然后在文件中加入流信息,使得文件以流的形式在网络中传输,并被播放器处理。对于实时音视频信号,首先须将模拟信号数字化,之再采用高效编码算法对数字信息进行压缩,然后将压缩后信息封装到合适的传输协议中。流媒体需要从服务器到达播放器就必须经过网络传输,流媒体实现的关键技术就是流式传输【9】。流式传输定义很广泛,现在主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为将影像,声音等信息经过数字化以及压缩处理后,通过Internet将数字信号传送到播放器终端。实现流式传输有两种方法:实时流式传输(Real—timestreaming)和顺序流式传输(Progressivestreaming)【101。顺序流式传输是文件顺序下载,在下载文件的同时用户可在线观看:在给定时刻,用户只能观看已下载的部分,而不能跳到还未下载的前头部分。它不支持现场广播,实际上它是一种点播技术。实时流式传输保证媒体信号带宽与网络连接6 北京邮电大学硕士学位论文匹配,使媒体可被实时观看到。实时流式传输需要专用的流媒体服务器和传输协议。实时流式传输总是实时传送,特别适合现场事件。流媒体业务正变得日益流行,目前流媒体技术已广泛应用于IPTV、远程教育、手机电视/影院、互联网直播/点播、视频会议、视频监控等领域。2.2相关协议系统要在Internet上传输数据就必然涉及一系列网络传输协议。这些协议包括Internet本身的多媒体传输协议,以及实时流式传输协议。只有采用合适的协议才能更好的发挥流媒体作用,取得最佳的图像质量与实时性。系统所采用的协议为目前针对Internet上多媒体数据流实时传输的相关协议:RTSP,SDP,RTP/RTCP。2.2.1RTSP协议实时流协议RTSP(RealTimeStreamingProtoc01)【ll】定义了一对多应用程序如何有效地通过IP网络传送多媒体数据,是TCP/IP协议体系中的一个应用层协议。该协议用于在客户端和服务器端建立和协商实时流会话,用户可利用该会话控制客户端与服务器间的多媒体串流,这使音频与视频的受控、点播成为可能。RTSP允许多个串流在一个会话内被控制。RTSP是文本协议并且类似HTrP,其主要不同之处在于RTSP是标准的流媒体协议,并通常利用独立传输协议(通常是RTP)来传输媒体数据,并且RTSP是双向的,客户端与服务器端都可发出请求。RTSP工作的基本流程为本端发出请求,对端处理请求并发送回复,本端收到回复并处理。其中发送的请求主要包含需要对端执行的方法以及所需参数,RTSP共包含11个方法,他们的作用以及实现要求如下表2.1所示。表2-1RTSP协议的方法方法名称作用发送方向实现要求请求URL参数所指定的媒体客户端至DESCRIBE建议实现的描述信息服务器当从客户端发往服务器端,该方法将URL参数所指定的媒ANNoUNCE体描述信息发送到服务器。当双向可选从服务器端发往客户端,该方法更新会话描述。检查URL参数指定媒体的参GET-PARAMETER双向可选数值OPTIONS请求对端所支持的方法列表双向必须实现7 北京邮电大学硕士学位论文临时中断URL指定媒体的传客户端至PAUSE建议实现输服务器请求服务器将媒体以SETUP客户端至PW必须实现所指定的传输机制进行发送服务器服务器根据URL存储记录的客户端至RECORD可选数据服务器重定向请求,通知客户端连接服务器至REDlRECT可选到另一服务器地址客户端指定URL参数所标志的媒体客户端至SETUP必须实现的传输机制服务器SELPARAM日rER设置URL指定流的参数值双向可选停止URL指定的流发送,释放客户端至TEARDOWN必须实现相关资源服务器2.2.2RTWRTCP协议实时传输协议RTP(RealtimeTransportProtoc01)【12】:是针对Internet上多媒体数据流的一个传输协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP没有规定下层的传输协议,它可承载于UDP,TCP或ATM等其他协议之上.RTP只进行实时数据的传输,但不保证数据的按序传送,接受方依靠时间戳字段恢复数据的正确时间顺序。另外RTP也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。实时传输控制协议RTCP(RealtimeTransportControlProtoc01)【13】:负责管理传输质量在当前应用进程之间交换控制信息。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTCP主要有4个功能:(1)用反馈信息的方法来提供分配数据的传送质量,这种反馈可以用来进行流量的拥塞控制,也可以用来监视网络和用来诊断网络中的问题;(2)为RTP源提供一个永久性的CNAME(CanonicalName)的传送层标志,因为在发现冲突或者程序更新重启时SSRC(SynchronizationSources)会变,需要一个运作痕迹,在一组相关的会话中接收方也要用CNAME来从一个指定的与会者得到相联系的数据流(如音频和视频);(3)根据与会者的数量来调整RTCP包的发送率;(4)传送会话控制信息,如可在用户接口显示与会者的标识,这是可选功能。 北京邮电大学硕士学位论文RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。工作时,RTP协议从上层接收流媒体信息码流,装配成RTP数据包发送给下层,下层协议提供RTP和RTCP的分流。’2.2.3∞P协议会话描述协议SDP(SessionDescriptionProtoc01)【1羽用于描述以会话邀请,会话通知,以及其他形式的多媒体会话初始化为目的的多媒体会话。由服务器端生成描述媒体的SDP文件,其中包括媒体的编码信息以及所在的服务器的链接等信息,客户端通过它来配置播放软件的设置。它是一个简单、可扩展语法的文本协议【lSl,采用UTF-8编码中的ISO10646字符集。SDP文件保存了对媒体的描述,一个SDP文件包含如下内容:(串符号表示可选字段):v=(协议版本)0=(所有者/创建者和会话标识符)S=(会话名称)i=,Ic(会话信息)U=木(URI描述)e=木(Emaii地址)P=木(电话号码)C=木(连接信息一如果包含在所有媒体中,则不需要该字段)b=木(带宽信息)一个或更多时间描述(如下所示):Z=水(时间区域调整)k=,Ic(加密密钥)a=木(0个或多个会话属性行)O个或多个媒体描述(如下所示)时间描述t=(会话活动时间)r=术(0或多次重复次数)媒体描述m=(媒体名称和传输地址)i=术(媒体标题)(连接信息一如果包含在会话层则该字段可选)(带宽信息)(加密密钥)(0个或多个会话属性行)9水术串宰=Cbka 北京邮电大学硕士学位论文2.3达尔文流媒体服务器在流媒体监控系用中,一个最重要的功能就是从监控设备中得到音视频数据,并根据用户的请求按需将数据分发给用户。流媒体服务器的主要功能就是采用标准流媒体协议将音视频数分发给用户。目前的流媒体领域,主要有三种平台:RealNetworks公司的RealSystem,微软公司的WindOWSMedia,苹果公司的QuickTimdl6】。三大平台都有相应的流服务器作为其应用的核心,其中苹果公司的流服务器是QuickTimeStreamingServer(简称QTSS)。QTSS使用标准的实时传输协议/实时流媒体协议(RTP/RTSP),通过互联网实时传送媒体,同时还支持FreeBSD、Linux、Solaris、WindowsNT和Windows2000等多个操作系统,是当前所有同类产品中支持平台最多的一个。苹果公司作为Internet流媒体联盟(ISMA)的核心成员不但其流媒体的技术与解决方案符合标准,而且QTSS是开放源代码的,其项目名称是DarwinstreamingSel"Ver(下文简称DSS)。DSS的源代码和相关文档可从以下站点获得:http://www.apple.com。DSS源代码完全采用标准C++语言写成,编程风格非常优秀,每个C++类都对应着一对和类同名的.h/.cpp文件。大量采用了面向对象的概念,如继承、多态等等.DSS与其他流媒体服务器相比具有以下优势:1)平台优势:支持Windows、Linux、Solaris等多个当今主流操作系统;2)价格优势:Darwin流媒体服务器的源码完全开放免费;3)接口开放:Darwin流媒体服务器有开放的二次开发接口,用户可根据需求使用DSS提供的编程接口开发自己的QTSS模块,来补充QuickTime流媒体服务器的功能。4)功能强大:支持多种流行的音视频编解码格式,能够实现基本的流媒体中继功能,记录相应中继流的相关信息。2.4本章小结本章介绍了网络实时操作系统中所采用的技术。首先介绍了流媒体概念以及所涉及的主要技术,接着介绍了流媒体传输的相关协议,主要包括RTSP,RTP/RTCP,SDP,最后对达尔文流媒体服务器的功能和特点进行了介绍。lO 北京邮电大学硕士学位论文第三章网络实时监控系统总体设计网络实时监控系统由多个功能各异的节点通过网络互联构成。系统总体设计包含了系统组织结构,系统中各节点的基本功能,所采用的技术,它们间的通信方式,以及系统的基本运行流程。下面分别就这几方面内容进行介绍。3.1系统结构网络实时监控系统由网络摄像头、代理服务器、目录服务器、流媒体服务器、用户终端等节点构成,它们通过网络连接相互通信,协同工作,为用户提供实时监控视频观看服务,系统的网络结构如图3.1所示。手机用尸图3-1网络实时监控系统网络结构图图3.1中,目录服务器与流媒体服务器共同构成系统的核心,他们可以分别位于不同的主机,也可以运行在同一台主机之上。目录服务器与流媒体服务器都位于公网中,以便所有的用户可以对其进行访问,并且可以管理摄像头以及接收摄像头发送的视频音频数据。 T,蔼篓苎兰!竺竺三私有网络或公网。若摄像头位于公网(拥有公网p)则可:差紫警竺蚕统中。若摄像头位于私网删要么菇主≤磊募乏烈絮统中壤鼍在摄像头所在局域网的出口路由器进磊菇爵i篙(Demmil⋯it⋯arizedzone)映射,后面这种方式等同于摄谲¥茹剁M厶赳赫竺警曼苎兰耋蝥兰所需代理的摄像头位于同一局域网,以便控蔷葬转发摄像蓥翌二挈黧苎黔.~般使用便携式代理服务器(便磊;蒜薹纛姜等麓詈冀耋曼譬:,黧他翌登的设备,将摄像头接入到系统。磊磊丢磊磊;二翥主网线与摄像头相连,通过无线网卡与妇锄et连接。一一_h牡川灯≯腑腿烛的二曼三三?’眦苎妻璺坌由摄像头构成,它实现了网络实时监控系统对外部世界慧竺苎矍二竺篓篓篓妻频的采集,告警信息的触发都在由芸部蒜轰!爱。前端部分就是系统的感知器官。⋯~~⋯“。脚。’池0曩全部分妻竺理竺务器构成,它负责将前端部分接入系统,是系统核心与前霎篓黧二:之零:。孳仝部分转发来嗽娜分的控制信三j套需磊纛萎蚕筹堇譬譬彗来宝竺璺曼黧控制。另~方面,它懒娜芬转蒜茹薹聂并某竺竺曼:、兰曼!竺翌譬发何椭息,以何种方式传输运行赢。高孬聂磊孬兰霎竺詈竺鳖三箩端的差异性。前端部分的摄像头来自多个≤备器焉:麓篓紫苎存套差主竺。。贷鳓务器可对不同的摄像头设备进存运磊二云二茹竺提篓竺:竺苎譬耄苎:通过接入部分对设备差异进行;磊吾:-姜怎茹善;夏夏统_竺篓詈磐予上传的信息,并采用相同的方式对前端进行控铜:Jio一“’川4卧队核心部分由目录服务器与流媒体服务器构成,是数据中转,请求处理,用户12 北京邮电大学硕士学位论文访问与管理控制的中心。流媒体服务器一方面处理所有代理服务器数据上传的RTSP请求,接收所有前端摄像头上传的数据,一方面处理所有用户观看RTSP请求,向用户分发他们所需的媒体数据,是RTSP请求处理与数据中转的中心。目录服务器是所有用户访问系统的接口,用户通过登录它才能对摄像头进行选择与观看。同时目录服务器集中了所有前端摄像头与用户的信息,管理员所作的所有管理操作都需通过它来进行,对前端摄像头的控制信息也由目录服务器发出,因此它是系统管理控制的中心。用户部分由用户构成,是媒体数据流向的终点。用户访问目录服务器得到视频URL,与流媒体服务器进行RTSP协商,最终得到所需视频的RTP数据。媒体数据由前端产生,经过接入部分,核心部分,最终到达用户。3.2系统节点网络实时监控系统中所有节点的基本功能以及所采用的技术如下所述:网络摄像头:采集视频与音频,将音视频信号数字化,压缩编码,协议封装与网络传输。网络摄像头实现了RTSP协议,RTP/RTCP协议,能够与其他实现了RTSP协议的对端进行RTSP会话过程,并在协商成功后将处理好的音视频数据封装到RTP数据包发送到对端。功能更高级的网络摄像头还实现了告警触发与告警信息发送等告警功能。系统中网络摄像头采用了市场上已有的设备,它们可以是集上述功能为一体的口摄像头,也可以是模拟视频采集设备,模拟音频采集设备与视频服务器组合而成的网络摄像头。这里视频服务器实现了模拟信号数字化,压缩编码,RTSP协议,RTP协议,告警以及网络传输等功能。流媒体服务器:是系统中转发视频音频数据的核心,摄像头通过网络将所采集的实时影音上传至流媒体服务器,而用户通过访问流媒体服务器获取自己所需的监控视频。对于摄像头侧,流媒体服务器接收摄像头上传的音频视频数据,并进行缓存。同时它在系统中形成唯一的SDP文件对这一路媒体流进行标识。对于用户侧,流媒体服务器接收来自用户的观看请求,并将用户所指定的音频视频数据传送到用户终端。流媒体服务器使用标准协议与外界进行通信:采用RTSP协议进行媒体传输前的协商与传输过程控制,协商成功后使用RTP协议进行媒体数据的传输,并采用RTCP协议对传输进行监控与统计。系统中流媒体服务器采用了节果公司的开源达尔文流媒体服务器,下一节将对流媒体服务器的结构进行详细介绍。目录服务器:为所有用户提供一个访问系统的统一平台,为管理员提供管理用户和摄像头的管理接口。用户对摄像头的监控视频的观看实际上是通过对流媒体服务器上所缓存的视频音频数据进行访问而实现的。但在流媒体服务器上集中13 北京邮电大学硕士学位论文了所有摄像头的视频音频缓存并以SDP文件进行标识,这造成两个问题:首先用户如何得到自己需要观看的摄像头所对应的SDP文件;其次,若用户没有摄像头的观看权限,系统则应阻止该用户访问摄像头所对应的SDP文件。使用目录服务器为用户提供统一的系统访问接口解决了这两个问题。用户通过目录服务器所提供的目录服务可以方便得到所需观看摄像头的URL,同时通过它可对用户的访问进行控制。对于管理员,目录服务器提供了对用户,摄像头以及两者问对应关系的管理接口。代理服务器:代理与其位于同一局域网的所有摄像头,使这些摄像头能够被管理员通过代理服务器进行管理。代理服务器接收来自目录服务器的命令,分别对摄像头与流媒体服务器进行RTSP的协商与控制,并将来自摄像头的RTP数据转发到流媒体服务器。通过代理服务器,管理员可以对需要上传至流媒体服务器的RTP数据进行控制。用户终端:指安装了浏览器与播放程序的终端,为用户提供目录服务的访问与视频观看功能。浏览器只需支持H1]【.P网页与JavaScript即可,包括IE,FireFox,遨游等。最基本的播放程序只需实现RTSP协议,RTP/RTCP协议以及数据解码功能,目前系统可用的播放器包括Real公司的RealPlayer,MicroSoft公司的MediaPlayer,以及Apple公司的QuickTime。3流媒体服务器的设计本系统中流媒体服务器包括两个模块:代理模块与中继服务模块。流媒体服务器结构,以及与其他节点的交互如图3.3所示。代理模块的功能与代理服务器基本相同,可以将它看作运行在流媒体服务器中,中继服务模块前端的内部代理服务器。它的目的是代理所有位于公网的摄像头,使其能够被目录服务器管理,并对其上传的RTP数据进行控制。中继服务模块负责接收并缓存摄像头上传的视频音频数据,同时它负责监听,处理用户的观看请求,将用户请求的摄像头视频转发到对应用户终端。图3-3流媒体服务器外部通信与内部结构14 北京邮电大学硕士学位论文如图3.3所示,代理模块需要与摄像头,目录服务器,中继模块交互。首先,在摄像头至目录服务器方向,代理模块转发摄像头信息。其次,在摄像头,中继服务模块两侧,代理模块分别与他们进行RTSP协商,并在协商成功后,从摄像头至中继服务模块方向转发础哼数据。最后,代理模块接受来自目录服务器的控制信息,通过两侧的RTSP会话,对摄像头至中继服务模块方向的RTP数据转发进行控制。对于代理模块更详细的介绍,请参考论文第五章。中继服务模块需要与代理模块,代理服务器,用户终端,使用标准的RTSP,RTP/RTCP协议进行交互。本系统中,中继服务模块采用了开源达尔文流媒体服务器,下面分别就功能与性能两方面内容对达尔文流媒体服务器进行介绍。3.3.1达尔文服务器对功能要求的满足首先,作为满足用户观看需求的服务器,中继服务模块必须能够接收并处理用户的RTSP请求,并且向客户端分发RTP数据。由于不同的客户端可能要求RTP采用不同的传输方式(uDP或TcP),因此中继服务模块需要实现通过UDP以及TCP两种方式发送RTP数据。其次,中继服务模块必须能够得到摄像头的数据。在媒体数据的上行方向,代理模块与代理服务器(以下简称代理)是中继命令的执行者,并且与摄像头直接进行RTSP协商,而中继服务模块只能被动接收代理向其转发的RTP数据。因此,代理与中继服务模块间采用RTSP的push模式进行RTSP协商:即由作为客户端的代理向作为服务器端的中继服务模块发出ANNOUNCE请求发起RTSP会话。虽然在RTSP协议中ANNOUNCE的实现是可选的,但本系统中,中继服务模块必须实现该方法。同时,代理会根据配置采用不同的RTP传输机制,因此中继服务模块必须实现通过UDP以及TCP两种方式接收RTP数据。Darwin流媒体服务器完全实现了对上述功能的要求。Darwin流媒体服务器核心采用“内核+模块(Module)”的系统结构。服务器内核支持流媒体服务最基本、最核心的功能,内核中实现了对RTSP监听、RTSP会话、RTP会话、RTCP任务的支持【171.(1)RTSP监听支持:在内核初始化时会根据配置参数中的监听端口号列表创建一组RTSP监听对象,但并不立即在这几个TCP套接字上开始接收RTSP请求,而是在内核完成一系列的动作之后再启动任务,通知RTSP监听对象开始接收RTSP请求。(2)RTSP会话支持:RTSP会话对象负责RTSP请求的处理工作。客户端与服务器建立有一条RTSP连接,也即端请求时建立的TCP连接。通过该RTSP连接请求,服务器则向客户端发送RTSP响应。Darwin流媒体服务器实现了RTSP协议中的所有方法。(3)RTP会话支持:RTP会话对象负责流媒体数据的RTP数据包发送工作。15 北京邮电大学硕士学位论文内核中实现了负责RTP会话的UDP套接字的管理,为数据发送作前期准备,并且在Play方法被调用后,RTP会话对象开始通过调用模块进行RTP数据包发送或接收工作,并且支持通过UDP或TCP两种方式接收或发送RTP数据。(4)RTCP任务支持:在内核启动任务时创建一个RTCP任务。在为RTP会话构造UDP套接字时,在接收RTCP数据包的UDP套接字上设置任务为该RTCP任务,使得该UDP套接字上收到RTCP包便运行该RTCP任务。3.3.2达尔文服务器对性能要求的满足所有摄像头上传的RTP数据都集中在中继服务模块,并由该模块分发到有需求的用户,系统中RTP数据流形成了图3_4所示的分布情况.。由图3-4我们可以看到,中继服务模块是整个系统中接收转发视频音频数据的核心。这要求中继服务模块除了可以完成RTSP协商,RTP转发等基本功能外,还需要有较高的实时性,稳定性与可靠性。Darwin流媒体服务器良好的设计,可满足这三方面的性能要求。摄像头用户图3-4RTP数据在系统中的分布Darwin流媒体服务器由四部分组成:1)核心服务器2)服务配置参数3)服务器模块4)客户端会话组成,如图3-5所示。核心服务器的作用是充当网络客户和服务器模块的接口,网络客户使用RTP和RTSP协议来发送请求和接收响应;服务配置参数主要用来保存系统运行所需要的一些参数,如超时时间,最大连接数,是否允许匿名访问等等。而服务器模块主要是负责处理请求和向客户端发送数据包。客户端会话包括RTSPSession和RTPStreams,用来记录会话的状态,每个会话都有唯一的标识符,使得每个客户的会话各不影响。16 北京邮电大学硕士学位论文客户稿金话IRTSP会话lIRTP'瘫I图3-5Darwin流媒体服务器的对象数据模型流媒体服务器在运行的时候由一个父进程构成的,这个父进程分叉出一个子进程,该子进程就是核心服务器。父进程会等待子进程的退出。如果子进程错误退出,则父进程就会分叉出一个新的子进程。核心服务器通过创建四种类型的线程来完成自己的工作,具体如下:1.服务器自己拥有的主线程(MainThread)。这个线程负责检查服务器是否需要关闭,记录状态信息,或者打印统计信息。2.事件线程(EventThread)。事件线程负责侦听套接口事件,比如收到RTSP请求和RTP数据包,然后把事件传递给任务线程。3.一个或者多个任务(Task)线程。任务线程从事件线程中接收RTSP和RTP请求,然后把请求传递到恰当的服务器模块进行处理,把数据包发送给客户端。缺省情况下,核心服务器为每一个处理器创建一个任务线程。4.空闲任务线程(IdleTaskThread)。空闲任务线程管理一个周期性的任务队列。该任务队列有两种类型:超时任务和套接口任务。在这四类线程的共同作用下,流媒体服务器具备了处理多任务、多事件的能力,能够稳定的保证程序运行的同时,完全保证了服务器的功能需求。3.4节点间数据交互与系统基本运行流程系统中网络摄像头,代理服务器,目录服务器,流媒体服务器,用户终端等节点通过网络传输实现相互通信的目的。根据各节点间所传输数据的不同类型,在网络中形成了不同的数据交互。系统中各节点问的数据交互如图3.6所示。用户终端与目录服务器通过HrrP协议交互,获取监控视频的URL,与流媒体服务器进行RTSP协商并接收RTP数据获取监控视频。目录服务器向代理服务器以及流媒体服务器发送控制信息进行中继建立与拆除操作,而代理服务器与流媒体服务器向目录服务器发送摄像头信息帮助其完成摄像头的自动管理功能。代理服务器接收并执行目录服务器的命令,并转发来自摄像头的信息,它一方面与摄像头进行RTSP协商,接收摄像头RTP数据,一方面与流媒体服务器进行RTSP协商,并向其转发摄像头的RTP数据。对于不通过代理服务器,直接接入17 北京邮电大学硕士学位论文到系统的摄像头,它通过流媒体服务器向目录服务器转发自身信息,并直接与流媒体服务器进行RTSP协商与RTP数据传输。流媒体服务器是整个系统RTSP协商与RTP数据转发的中心,它接收所有摄像头上行方向的RTSP协商与RTP数据,同时处理所有通向用户下行方向的RTSP协商与RTP数据转发。对于直接连接到系统的摄像头,流媒体服务器还要负责接收来自目录服务器的命令对其进行控制。网络摄像网络摄像头图3-6系统节点的数据交互系统中最基本的流程为用户获取监控视频的流程,摄像头到流媒体服务器中继的建立流程与拆除流程。基于以上对各节点间数据交互的描述,本文下面分别对这几种基本流程进行介绍。1.用户观看流程:所有用户都通过目录服务器对系统进行访问,并选择自己需要的摄像头进行监控视频观看。系统中用户得到监控视频的过程如图3.7所示(PC用户与手机用户过程相同)。图3-7用户观看流程18]IIlllIJ—J 北京邮电大学硕士学位论文1.).用户登录目录服务器,请求所需监控视频的URL2).目录服务器返回用户所需URL,并将其传递给流媒体播放器。3).播放器根据URL向流媒体服务器发起RTSP请求钔.RTSP协商成功后流媒体服务器向播放器发送RTP数据,.播放器对数据进行拆封与解码处理,最终为用户提供视频播放。2.摄像头中继建立流程:系统中摄像头均受目录服务器的控制进行中继的建立与拆除。若摄像头位于私网,对于目录服务器与流媒体服务器不可见,则对摄像头所在私有网络需部署代理服务器使摄像头变得可控,该情况下摄像头的数据上传流程如图3.8所示。图3-8通过代理的中继建立流程1).代理服务器收到目录服务器建立摄像头中继的命令2).代理服务器向指定摄像头发起RTSP协商3).协商成功后摄像头向代理服务器发送RTP数据铆.代理服务器继而向流媒体服务器发起RTSP协商5).与流媒体服务器协商成功后,代理服务器开始将从摄像头处得到的RTP数据转发到流媒体服务器,至此摄像头到流媒体服务器间的中继建立完成。通过代理服务器进行的中继删除过程如图3—9所示。摄像头流媒体服务器图3-9通过代理的中继拆除流程1).代理服务器收到目录服务器的命令拆除中继2).代理服务器通过与流媒体服务器间的RTSP会话终止数据传输。3).代理服务器通过与摄像头间的RTSP会话终止数据传输,至此摄像头到19 北京邮电大学硕士学位论文流媒体服务器间的中继被拆除。对于不通过代理服务器直接连接到系统的摄像头,他们中继的建立与拆除过程通过流媒体服务器直接进行控制。该情况下,摄像头的中继建立过程如图3一10所示。务器0一飞卜娟3.5本章小结本章介绍了网络实时监控系统的整体设计,包括系统中各节点的功能,部署位置,并对其中流媒体服务器所采用的开源代码,达尔文流媒体服务器进行详细说明。最后对系统中各节点间的数据交互与几种系统基本运行流程做出介绍。20 北京邮电大学硕士学位论文第四章目录服务器的设计与实现目录服务器位于网络实时监控系统的中心位置,是系统的访问与控制中心。作为系统的访问中心,它为用户提供摄像头的URL目录,是所有用户对系统的统一访问接口,另外它还为用户提供告警短信通知功能。作为系统的管理控制中心,目录服务器的作用主要体现在以下三方面:对用户访问权限的管理,摄像头信息的自动管理;摄像头的数据传送的自动控制。下面将对目录服务器的设计与实现进行详细介绍。4.1目录服务器需求分析目录服务器的开发针对企业级应用,为单独的企业提供服务。系统中的用户可分为管理员与用户两种角色,下面分别对这两种角色的功能需求进行说明。4.1.1管理员需求说明管理员通过目录服务器对系统进行管理,其主要职责为管理系统中的摄像头,用户,以及用户对摄像头的访问权限。系统为管理员提供的功能如下:1.摄像头自动注册:新开通的摄像头可自动注册到目录服务器,注册信息包括摄像头名称,IP地址,MAC地址,RTsP端口,Web管理端口等。2.摄像头状态维护:系统实时更新摄像头的在线状态,若摄像头关机或网络连接中断,则将摄像头状态置为离线,若摄像头恢复运行则重新将其状态置为在线。3。摄像头管理:管理员可查看,修改,增加,删除摄像头信息。并对摄像头进行开通/关闭,分配操作。只有当摄像头开通后才能对摄像头进行分配操作。4.用户管理:管理员可查看,删除,修改用户信息。5.按时间自动管理所有用户与摄像头关系:管理员按时间向用户分配可观看的摄像头。系统按用户对摄像头的可观看时间(永久或按天,小时计算)自动管理用户所能观看的摄像头。当用户对某个摄像头的可观看时间到期,系统将把该摄像头丛用户可观看列表中删除。6.中继自动控制:根据当前视频观看情况进行中继的控制。当第某摄像头第一次被用户请求观看时,系统建立相应摄像头到流媒体服务器间的数据传输。当某视频的最后一个用户停止对其的观看时,系统停止相应摄像头到流媒体服务器间的数据传输。7.告警组管理:针对某一群体的用户关心相同的摄像头告警信息,管理员可21 北京邮电大学硕士学位论文将用户或摄像头加入到某个告警组中。在告警组中的所有用户可以接收到本组中所有摄像头的告警短信。管理员也可将用户或摄像头从告警组中删除。8.系统工作日志:对系统中各种操作事件做日志记录,并为管理员提供查看,搜索,删除等功能。4.1.2用户需求说明用户通过注册方式获得系统账号。用户主要功能为,选择摄像头进行观看,但用户需通过系统以外的方式通知管理员需要观看的摄像头,并由管理员进行摄像头的分配。1.摄像头观看:用户通过访问系统可得到自己所能观看的摄像头列表,通过点击列表中的摄像头就可得到该摄像头的监控视频。2.告警短信通知:系统接收各摄像头的告警信息,并通过短信猫可自动发送短信到用户手机进行通知。4.2目录服务器总体设计目录服务器系统基于B/S模式,以web方式为用户和管理员提供访问接口。系统采用分层的模块化结构.在横向上,系统划分为展示层,业务逻辑层,接口层,数据访问层以及数据库等五个层面,每一层负责一种类型的操作,它们相互协作共同完成目录服务器的所有功能.在纵向上,系统分为摄像头管理模块,用户管理模块,告警组管理模块,日志管理模块以及摄像头观看模块。每个模块都实现了一组相对独立的功能,这五个模块共同构成了目录服务器系统。系统结构如图4.1所示。系统中五个层次的功能分别如下:1.展示层:包括所有页面,是系统与用户的接口。用户可进行的操作与系统返回的结果都通过这一层向用户展现。用户通过点击页面的菜单或按钮向逻辑层发出请求。2.业务逻辑层:所有来自页面的用户请求都将被业务逻辑层捕获。业务逻辑层的各个模块根据用户的请求调用不同的处理流程,最终返回结果到展示层。业务逻辑层通过调用数据访问层以及接口层的方法获得需要的数据。3.数据访问层:位于逻辑层与数据库之间,负责数据库记录的增加,删除,修改及查询操作。用户请求中所有与数据库有关的操作都在本层通过Hibernate的数据库连接实现。数据访问层包含一组数据访问对象,这些对象与数据库中的表一一对应,即每张表都对应一个自己的数据访问对象。4.接口层:负责与系统外部设备的交互。这些设备包括代理服务器(包括流媒体服务器的代理模块)以及短信猫(短信发送设备). 北京邮电大学硕士学位论文图4-1目录服务器的系统结构5.数据库;保存系统的所有记录,包括用户资料,摄像头信息,以及操作日志等数据。各层间的基本调用流程为用户通过展示层发出请求,展示层将用户请求提交至业务逻辑层触发处理流程,业务逻辑层调用数据访问层提供的方法修改数据库记录,或者通过接口层操作外部设备。一些接口层的操作也需要通过调用数据访问层的方法修改数据库记录。各层间调用关系如图4.2所示。展示层⋯求曲舡业务逻辑层彳b彳b返回方法调用厣用义』夕.方法调用≈尹返回数筹层匐钏层库连接{£返刨数据库图4-2目录服务器层次调用关系 北京邮电大学硕士学位论文4.3目录服务器模块详细设计目录服务器中各个模块分别实现一组相对独立的功能,其中日志模块比较简单,它仅为其它模块提供添加日志记录到对应数据库表的方法,并为管理员提供查看,搜索,删除日志的功能,在此对日志模块的设计不再作赘述。另外四个模块的设计与实现相对复杂,下面分别对这四个模块的详细设计进行介绍。4.3.1用户管理模块设计用户管理模块负责所有的用户资料管理与向用户分配摄像头。具体功能有用户注册,用户登录,为用户分配摄像头,摄像头期限管理,用户资料查看,用户资料修改,以及密码找回等功能。该模块结构如图4.3所示。展示层用户管理页面__一1qP业务用户管理逻辑l誓墨f逻辑层Hl|趟哆}数据用户相关数访问层据访问/\U数据库用户用户与摄像摄像头分信息表头关系表配记录表—=》方法调用与结果返回<:令数据图4-3用户管理模块结构除了摄像头期限管理功能,其它功能设计相对简单:它们通过在展示层的页面放置按钮或链接,由管理员操作触发业务逻辑层中相应流程,调用数据访问层中相应方法修改数据库中记录,最终将更新后的记录返回到页面。摄像头期限的设计与这些功能不同,它通过用户管理逻辑中的期限管理子模块实现,期限管理子模块是一个在目录服务器中一直运行的定时任务。每当整点与半点,该任务会将用户与摄像头关系表中的持有时间字段递减,同时检测分配到用户的摄像头是否到期(持有时间字段值为O)。若已经到期,该任务将删除摄像头与该用户的关系。并在摄像头操作记录表中增加一条记录。期限管理子模块的运行流程如图4.4所示。 北京邮电大学硕士学位论文no图4-4摄像头期限管理流程如图4—4中所示,任务初始化后便设置一个时长为T(5分钟)的定时器,并进入等待超时状态等待该定时器超时。定时器超时后,任务首先检查当前时间是否为整点或半点。检查方法为当前时间分钟数与30相除取余,若余数小于T/2向下取整,则认为当前时间为整点或半点。检查结果若为真,则调用数据库操作过程。该过程将数据库中用户与摄像头关系表中的所有持有时间字段非负的记录的该字段减1,并检查减l后结果是否为0,若为0则说明用户对摄像头的持有时间已经到期,需删除用户的持有权限;检查结果若为假,则重新启动时长为T分钟的定时器再次进入等待超时状态。4.3.2摄像头管理模块设计摄像头管理模块负责所有摄像头的信息管理。具体功能包括摄像头自动注册,摄像头状态维护与信息修改,摄像头信息修改,摄像头添加/删除等功能。该模块结构如图4-5所示。展示层l摄糌理-■尸__1尸—·』I|II业务逻辑层(..二。摄像头管理:三。)妙0{}{‘一,数据访眼l燮苣。卜维护]如层{E㈡~‘用户与数据库摄像头信息袁日志表关系袁c==令方法调用与结果返目<:令曩据图4-5摄像头管理模块结构 北京邮电大学硕士学位论文该模块中摄像头自动注册,信息自动修改,状态维护等功能都需要接口层中注册维护模块的支持,注册维护模块的结构以及与业务逻辑层,接口层的调用关系如图4—6所示。业务逻辑层(摄像头管理逻辑)厶b添加/删除/修改提供摄像头状态信息摄像头记录注册维护模块Q.夕摄像头表:一>接口层疚S彳1b彳1芯添加新记录修改计数与修改IP信息状态信息来自f_:理的摄像爿:信息卜摄像头信息处摄像头状态维1)y理任务护任务提供摄懂!头表初始化一言息向数据库添加新记录,修改IP信息Q一.夕数据访问层摄像头相关数据访问图4-6注册维护子模块结构如图4—6所示,注册维护模块中包含了一个名为摄像头表的数据结构。该数据结构是一个键值到记录的映射表。它以摄像头MAC地址为键值,以摄像头内部P,所属代理服务器口,在线状态,计数器等信息为记录保存了系统中所有摄像头信息。其中计数器记录了一个整型变量,它代表目录服务器还有多少个时间周期将把该摄像头置为离线状态。摄像头MAC地址,IP地址,所属代理服务器的D地址为摄像头静态信息,需要与数据库中的记录同步。在线状态与计数器信息属于摄像头动态信息,他们仅在系统运行时生成,因此只需保存在内存中即可。该模块通过摄像头信息处理任务与摄像头状态维护任务分别完成摄像头自动注册,信息自动修改功能与状态维护功能。摄像头信息处理任务负责摄像头的自动注册与信息自动修改。该任务是一个在后台循环运行的进程,它监听所有代理所发送的摄像头信息,并根据信息的解析结果修改摄像头表内容与数据库记录。该进程的运行流程如图4.7所示。 北京邮电大学硕士学位论文图4—7摄像头信息处理进程1.该任务启动后首先调用初始化过程。初始化过程从数据库读取摄像头信息,填充摄像头表中MAC地址,口地址,所属代理m地址,并将所有摄像头的状态初始化为离线状态,计数器初始化为0,由此完成摄像头表的初始化。之后该任务在配置端口建立监听,以接受所有来自代理的摄像头信息。2.任务进入等待状态,在此阻塞,直到有摄像头数据到来。3.每当收到一个摄像头信息,该任务首先调用解析过程,从收到的消息中解析出摄像头的MAC地址,IP地址,所属代理口地址等信息。接着,摄像头信息处理任务首先检查该MAC地址是否已经存在于摄像头表中,若不存在,说明数据库中还没有该摄像头的记录,分别向摄像头表与数据库中添加该摄像头记录,在摄像头表中,摄像头状态初始化为在线,计数器初始化为最大值,添加完成后任务返回2。若摄像头表中存在相关记录,则进行下一步操作44.检查摄像头的IP信息是否与记录中一致,若一致,则直接进入下一步操作5;若不一致,则分别在摄像头表与数据库中做出修改后进入下一步操作5。 北京邮电大学硕士学位论文5.摄像头信息处理任务将摄像头表中相应记录的计数器置为最大值,然后检查摄像头状态。若状态为在线,则直接返回2;若状态为离线,则先将其置为在线,最后返回2。摄像头状态维护任务负责维护所有摄像头的在线与离线状态。它是一个定时任务,定期减小摄像头表中的计数器值,并将计数器为0的摄像头状态置为离线。该任务的运行流程如图4-8所示。l丌面西丁、设置定时器(T)2(.竺竺塑竺厂吾蕊遍历完成二n[0l取下一条记录●-。。’●。。。●’。。-’。。。。。。。。一计数器>O’两可一计数器减l=二[计数器>0正n01..____。--__._。.。_-_I_.._-。_。...___一将状态置为离线yes4设置定时器(T)图4-8摄像头维护任务流程图1.任务创建后立即启动一个定时器,该定时器时长T与摄像头发送消息的周期一致。2.任务进入等待状态。3.定时器超时后,摄像头状态维护任务逐一读取摄像头表中的记录,并将其中计数器字段大于0的记录的该字段减l。每当作完减法,该任务都需判断目前计数器值是否为0,若为0则将该摄像头的状态置为离线,然后读取下一条记录:若不为0则直接读取下一条记录。该循环直到遍历完摄像头表中的所有记录,然后进入下一步操作4。4.该任务重新启动时长为T的定时器,并进入2。4.3.3告警管理模块设计告警管理模块一方面为管理员提供对摄像头告警信息以及告警信息接收人283一;。。o一皓。l弦 北京邮电大学硕士学位论文的配置管理,包括创建/删除告警组,为组分配用户,为组分配摄像头,编辑告警信息等功能。另一方面,该模块根据配置为用户提供告警信息的短信通知功能。该模块结构如图4.9所示。展示层告警组管理页面l—'r—V逻辑层辑)l告警组管理逻辑J,、1f一⋯移数据告警组相关l—l、l告警接口层访问层.数据访问l一{l一’l处理ZX钎移告警组用户与告警摄像头与告告警接数据库信息表组关系表警组关系表收人表摄像头分}l用户分配I组操作信息发送配记录表Il记录表记录袁<亭—==主>方法调用与结果返回《舀互翟翟冷数据图4-9告警管理模块结构该模块为管理员提供的配置功能通过展示层,业务逻辑层,数据访问层与数据库的相互调用完成。为用户提供的短信通知功能,通过接口层,数据访问层与数据库完成。该模块的接口层功能由告警处理子模块实现,它包含接收代理告警信息的接口以及短信猫的短信发送接口,分别完成告警信息监听处理功能与短信转发功能。告警处理子模块的结构以及与其它模块的调用关系如图4.10所示。接口层图4-10告警处理子模块结构 北京邮电大学硕士学位论文告警处理子模块包含告警监听与短信发送两个子模块。短信发送子模块封装了短信猫提供的短信发送API,并为告警监听子模块提供短信发送的方法。告警监听子模块负责监听所有代理发送的告警消息并对其进行解析,然后调用短信发送子模块中的方法进行短信发送。告警监听子模是系统中一个在后台循环运行的进程,它的执行流程如图4.11所示。图4-11告警监听进程流程图如图4.1l所示,该任务在启动后即进入等待状态。当有告警信息到来后首先进行解析过程,得到发送告警信息的摄像头MAC地址,与告警信息的类型(温度,红外等)。然后它根据MAC地址从数据库查询需要通知的用户,得到所需通知的用户手机号列表,同时还需要根据告警类型从数据库中查询所需发送的短信内容。最后,该任务以用户手机号与短信内容为参数,循环调用短信发送模块所提供的短信发送方法,直到对用户手机号列表中的所有号码都完成发送后返回等待状态。4.3.4摄像头观看模块设计摄像头观看模块为用户提供URL目录服务,使用户可以方便得到自己所需观看的监控视频,另外该模块为管理员提供中继的自动控制功能,使得系统能够根据观看情况自动建立或删除中继。该模块结构如图4.12所示。用户通过摄像头观看页面可得到自己所能观看的摄像头列表,该列表中每个摄像头都与在流媒体服务器上唯一标示其位置的URL一一对应。URL由协议名称(I玎SP),流媒体服务器地址,流媒体服务器RTSP端口号,视频的SDP描述文件组成,其中视频SDP描述文件以摄像头的MAC地址命名。用户在点击摄像头链接时,浏览器将把URL发送至内嵌在网页中的流媒体播放器插件,再由30 北京邮电大学硕士学位论文播放器与流媒体服务器进行RTSP协商与视频传输。<拿—妻>方法调用与结果返回协致据图4-12摄像头观看模块结构中继的自动控制功能由接口层的中继管理子模块与业务逻辑层提供的摄像头观看逻辑子模块提供。摄像头观看逻辑子模块负责传递摄像头观看页面所捕捉到的用户动作,并通知中继管理子模块,中继管理予模块根据记录的观看情况判断是否需要进行中继的建立或拆除操作。中继管理子模块的内部结构以及与其它模块的调用关系如图4.13所示。图4-13中继管理子模块结构3l 北京邮电大学硕士学位论文中继管理子模块由观看人数监控,代理接口,定期检查3个子模块组成,还包含三个重要的数据结构:1.中继记录表t记录了当前已建立的中继与它对应的观看人数,是进行中继建立或拆除操作的依据。2.中继操作表:记录了当前正在建立的中继以及执行该操作的任务。3.代理对应表:记录了系统中代理的P地址以及该代理于目录服务器间TCP连接,他们一一对应。每一路中继都代表了一个摄像头上传的媒体流,他们以SDP文件名标示。由于这三个数据结构可能同时被多个任务访问,因此对他们的访问方法必须是同步的。代理接口子模块主要负责与代理间的通信,并为人数监控予模块与定期检查子模块提供向代理发送中继控制命令的方法,包括建立中继与拆除中继两个方法,这两个方法所需的参数通过向注册维护模块中的摄像头表查询取得。人数监控子模块为摄像头观看子模块提供两个方法:增加人数与减少人数。这两个方法对中继记录表中的记录进行修改,并根据记录判断是否调用中继控制子模块提供的方法对代理发送命令。定期检查子模块定时向流媒体服务器查询当前已建立的中继是否有人观看,并根据查询结果判断是否调用中继控制子模块中拆除中继的方法。下面分别对人数监控与定期检查子模块的设计进行介绍,代理接口子模块在下一节进行详细介绍。每个用户点击一个摄像头进行观看,或是进行页面跳转与关闭页面,摄像头观看逻辑都可感知到该用户的操作并调用人数监控子模块中的相应方法。用户点击一个摄像头,说明需要对该摄像头中继的观看人数进行增加,若用户关闭页面或进行页面跳转,则说明需要对当前摄像头的观看人数进行减少。人数监控予模块负责对中继记录表进行操作,它改变中继使用记录中的人数,并根据中继的观看人数调用中继控制子模块的方法。增加人数(addPerson)方法流程如图4.14所示。addPerson过程以SDP文件名为参数,该过程被调用后首先检查在中继记录表中是否存在本中继的对应记录。若存在,则对该中继相应的观看人数加1,然后返回。若不存在,则说明系统中该中继没有建立,需要调用中继控制子模块的建立中继方法(addRelay)进行中继建立操作,中继建立方法返回后(无论中继建立是否成功该方法都会返回)若中继建立成功且中继记录表中仍没有该中继的记录,则该过程向中继记录中增加一条记录后返回(记录中的SDP文件为传入的SDP参数,观看人数为1),若建立成功但中继记录中已经存在该中继的记录,则对该中继相应的观看人数加l后返回。若建立失败则直接返回。32 北京邮电大学硕士学位论文图4-14增加人数方法流程减少人数(deletePerson)方法流程如图4.15所示。图4-15减少人数方法流程deletePerson以SDP文件名为参数,该过程首先在中继记录表中找到相关记录,并将其观看人数减l,之后判断该中继的观看人数是否为0。若为0。说明该中继目前已经无人观看,需要进行拆除,该过程首先在中继记录表中删除该中继的记录,接着调用中继控制子模块的拆除中继方法(deleteRelay)进行中继拆除操作,deleteRelay方法返回后该方法也返回。若观看人数不为0,则该方法直接返回。为了防止用户异常中断观看,本系统设计了一个定期检查子模块,该模块包含一个定时任务。若用户直接关机,或直接中断网络则摄像头观看逻辑无法感知用户停止观看的操作,定期检查能够发现这种情况,并进行处理。定时检查任务的运行流程如图4.16所示。 北京邮电大学硕士学位论文l设置定时器(T>(等待超时)设置定时器(T等待超时定时器T超时兰癯订厂{莳nol等待超时1I设置定时器(t)等待回复定时器t超时(I查询回复设置定时器(T)等待超时当兰中继记录表中删除记录拆除中继nO图4一16定时检查任务流程1.任务初始化后设置一个定时器,超时时长为T。2.任务进入等待超时状态3.定时器T超时,任务向流媒体服务器依次查询中继记录表中的每一条记录的中继,进入4。4.首先,任务取出中继记录表中的一条记录,向中继流媒体服务器发出查询消息,并设置时长为t的定时器(定时器t的目的是防止目录服务器与流媒体服务器间网络传输出现异常而导致任务无法继续运行)。之后,任务进入等待回复状态。在该状态下,若收到定时器t超时消息,则终止本次查询,重新设置定时器T并进入2。若收到流媒体服务器的回复消息,则检查该中继是否已经无人观看,若不是,则进入4;若是,则先删除中继记录表中的记录,再调用中继控制子模块的拆除方法,然后进入4。该循环直到对中继记录表的所有中继都完成查询时终止。5.查询完成后,任务设置定时器T并进入2。4.3.5代理接口子模块如图4-17所示,代理接口子模块包含代理监听,心跳维护,中继控制,结 北京邮电大学硕士学位论文果监听四个子模块,他们都分别与代理进行不同目的的通信:代理监听子模块负责接收代理的TCP连接请求,心跳维护子模块负责向代理发送心跳信息保证该连接的可用性,中继控制子模块负责向代理发送控制命令,结果监听子模块负责接收代理发送的命令执行结果。下面对这四个子模块分别进行介绍。图4—17代理接口子模块结构代理监听子模块负责监听代理的连接请求,收到代理的请求后该模块建立与代理的TCP连接,并将该代理的TCP连接保存至代理对应表。在向代理对应表中保存TCP连接时,任务首先检查该代理的IP地址是否已经存在于表中,若存在,则直接更新地址所对应的TCP连接并更新,同时通知结果监听子模将该代理以前的TCP连接从监听列表中删除后,将最新的TCP连接添加到监听列表中。若不存在,则生成新的记录保存至代理对应表,并通知结果监听子模块将该连接添加至监听列表。心跳维护子模块是一个定时任务,它定期向所有的代理发送心跳信息。它通过遍历代理对应表得到每一个代理的对应TCP连接,并向该连接发送心跳信息。若发送成功,则说明该连接可用,若发送失败则说明该连接已经出现异常,则该任务将该连接的记录从代理对应表中删除,并通知结果监听模块从监听列表中删除该连接。中继控制子模块对外提供的添加中继(addRelay)方法与删除中继(deleteRelay)方法并不直接参与中继的建立与拆除,他们仅向相应的代理发送命令,最终由代理执行中继创建或拆除流程。在前面的addPerson方法我们可以看到,只有中继建立成功后,中继记录表中才会存在该中继的记录。但中继的创35 北京邮电大学硕士学位论文建需要一定时间,可能在中继正在建立的过程中又有新的创建请求到来,为了避免重复创建同一中继addRelay方法将创建一个中继创建任务进行实际的命令发送,并借助中继操作表对该任务进行记录。addRelay方法执行流程如图4-18所示。图4—18addRelay方法执街。流程addRelay方法被调用后首先检查中继操作表是否有任务正在进行该中继的创建。若有,则addRelay方法进入等待执行完成状态,它等待该任务的执行结果返回后返回。若没有,则addRelay方法创建一个中继创建任务,将SDP名称作为参数传递给该任务,并立即在中继操作表中增加相应记录,随后也进入等待状态等待该任务结束后返回。addRelay方法的返回值根据收到的返回结果而定,有成功与失败两种情况,中继创建任务的运行流程如图4.19所示。任务创建后首先根据摄像头MAC地址在注册维护子模块的摄像头表中查询摄像头的m地址以及摄像头所属代理的m地址。接着,根据摄像头所属代理的口地址在代理对应表中查找连接到该代理的TCP连接。然后通过该连接向代理发送中继创建命令。命令发送完成后,中继创建任务启动定时器(该定时器是为了防止代理端出现异常或与代理的连接出现异常导致无法收到执行结果)并进入等待结果状态。一旦收到结果监听子模块的执行结果,便向所有等待自己的addRelay方法转发该执行结果,然后返回。若在定时器超时前都没有收到执行结果,在定时器超时后该任务向所有等待自己的addRelay方法发送中继建立失败的消息,然后返回。 北京邮电大学硕士学位论文图4—19中继创建任务的运行流程中继删除方法比较简单,它采用与中继创建任务相同的方法,根据摄像头MAC地址,查询摄像头的口地址,摄像头所属代理的口地址,以及连接到该代理的TCP连接,然后通过该连接向代理发送中继拆除命令后直接返回。结果监听子模块包含一个监听目录服务器到所有代理TCP连接的监听任务。一旦任何一个TCP连接上有中继执行的结果返回,该任务通过返回结果中的SDP名称在中继操作表中查找对应的中继创建任务,然后向该任务发送中继建立的结果。综上所述,在目录服务器端,一个完整的中继建立过程如下:1.用户向服务器发起对某摄像头的观看2.摄像头观看逻辑子模块调用人数监控子模块的addPerson方法,该方法通过条件检查后判断,应该建立该摄像头的中继3.addPerson方法调用代理借口子模块中中继控制子模块的addRelay方法。4.addRelay方法通过检查后创建中继创建任务,并将SDP名称与该任务记录到中继操作表,然后方法进入等待状态等待中继创建任务发送的执行结果。5中继创建任务向对应代理发送命令,启动定时器,开始等待执行结果的返回。6.结果监听子模块的监听任务收到执行结果,根据结果中的SDP名称在中继37 北京邮电大学硕士学位论文操作表中找到对应的中继创建任务,并向该任务发送执行结果。7.中继创建任务收到执行结果,向所有等待自己的addRelay方法发送执行结果。8.addRelay方法收到执行结果后返回。4.4目录服务器实现l妒涵.settiapl哥pc帽军“沥YebRooti固渗盯cl{嗣⋯囱rtaraxi国⋯国r,draini黔融霄ebRoot|l黟国action;霹融comloni≥,函.cl虹印tthl霸一‘》&to}审,弦》HETA-ZH|}‘豳._yhib∞mated毫t·;|零涵domtial露1白uobileas触r,豳.mymetldtttl!阑“‘汹interhc胡odId·!审露》us盯‘!■豳.my狮ldattli融◇service;谚国YEB-IlqF38 北京邮电大学硕士学位论文其中domain,dao,service三个包对应了目录服务器的数据访问层,他们所包含的类如图4--21所示。·函domain亩.留hlm一西du≯国Aceoaatl..og.j竹·卜国^ccmtLo扣柏.j竹-}团n蚋c弧t蛆t.j"▲}’豳n盯-c吼t峨tD加.jw·≥-函AlmnsSeceiver.j叭卜·国Alera凰eceiverDAO.jan}团CmerLjw-}。国CenreAllocateLo‘DAO.j姒}国Csser刖kLlocat,Lo‘jm卜’国c一盯柚加.jmb国CmmrtLo摹j”t卜国c一盯·Lo朗柏.j·张0团Group.jw·卜t国Gr们嵋-盯柚柚.j盼t}国Groutlinere.jm卜·豳GroupDA0.j.vl’眵篓捌c·}团GroupLo‘j叭b豳GroupLo暑DAO.jm卜团AllocateService.j叭≥函GroupUserLo‘jm卜匿GroupUserLo曲AO.jw毫争国Alt.“rService.j·他I国UesstgeLog.j押-争·国|essageLogDAO.jwt}围LozinService.j叭I国User.j押t卜,国Userc蛐盯柚加.j卵·卜’蛰Logout.IAstenet.j·张}国UserCmerLj埘-}团UserDAO.j押·争+望L0庐t耐c··j押t争,函User自voup.jiv,卜·国№盯白。呻D加.javzp国QueryServic,.j柙毫!⋯函UserLo‘jwt;⋯囱UserLo伽.j”·i⋯函RegisterService·j埘·图4—21数据访问层包含的类domain中包含所有数据库表所映射的类,以及java类与数据库表的映射文件(存放在hbm文件夹中)。数据库中每张表都对应domain中的一个java类,而该表的一条记录则对应这个java类的一个对象,这样开发人员可以使用面向对象的编程思想操作关系数据库,而这种对象与关系记录的转换工作由Hibernate框架完成。dao中每一个类分别对应每张数据库表的基本操作,他们只提供基本的单表操作。service所包含的类在dao的基础上进行了封装,他们组合dao的操作为其他类提供功能更加强大的数据库操作,例如组合条件查询,多表操作等。4.4.2业务逻辑层的实现src下的action包对应了目录服务器的业务逻辑层,该层包含的类如图4—22所示。巍渤actiOn国C椭ereAction.j钉·国Cemer毫yiewAction.j盯t豳GroupAction.jw毫豳Lo醇ction.j盯毫豳TiHLimitMtnage.j.va豳UserAction.jw^图4—22业务逻辑层包含的类CameraAction类对应摄像头管理逻辑子模块,实现所有关于摄像头管理的功能,包括添加,删除,查询,修改摄像头信息等。GroupAction类对应告警组管理逻辑子模块,实现所有关于告警组管理的功能,包括创建/删除/查询告警组,为组分配用户,为组分配摄像头,编辑告警信息等。LogAction类对应日志管理逻辑子模块,实现所有关于日志管理的功能,包括添加,删除,查看,搜索日志39 北京邮电大学硕士学位论文等。其中添加日志方法不对用户开放,仅为其他模块提供接口,以便在用户完成操作后调用该功能生成日志并记录到数据库。CameraViewAction类对应摄像头观看逻辑子模块,它负责向播放器提供摄像头视频的URL,同时通过方法调用,将客户开始或停止观看的动作传递到中继管理子模块。UserAcfion类与TimeLimitManage类对应了用户管理逻辑子模块,其中UserAction类实现用户登录验证,注册,查询,为用户分配摄像头等功能,TimeLimitManage类实现按时间管理用户的摄像头观看权限的功能,它继承自java.util.TimerTask类,在系统启动时开始运行。4.4.3接口层的实现interfaceModule包对应目录服务器的接口层,该层代码结构如图4-23所示。墨⋯《》int·rfact啊odlIl·自留.1·n;}‘幽Hess毫geSend.jiv,,;;⋯国ProeessCmermerm.jm壶⋯囱,register;卜圆C瑚onitot.j时·l卜,豳c·稿t“也jm;;⋯国ProeessCmmrdlessqe.j帆由⋯露》rd咿嗣⋯螽》proxyZntefface{卜圆HelrtBe毫t.j¨·;≥函Pr眩yco掰ctio勰.j竹·i多国Proxp4Astener.j·n|b国RelffiyContr01.j叭;i⋯围kmtIAstm皿tar.j竹·p’国FeriodCheck.j盯·i⋯围Fersonltonitor.jiv.图4-23接口层代码结构alarm包中的ProcessCarneraAlarm类与MessageSend类分别对应告警接收与短信发送子模块。ProcessCameraAlarm类在在系统启动时实例化:在固定端口建立Socket监听,每当有消息到来便进行解析并根据解析结果在数据库查询需要发送短信通知的号码,然后调用MessageSend类提供的方法依次发送短信通知。MessageSend类封装了短信猫提供的API,对外提供短信发送的接口。Register包对应注册维护子模块,如图4.23所示,该模块包含3个类:CamStatu类封装了摄像头信息,包含摄像头MAC地址,状态,计数器值,IP地址,所属代理的公网IP地址,每个在系统中的摄像头都有一个CamStatu对象与之对应。ProcessCameraMessage类有一个存储摄像头MAC地址到CamStatu对象映射的HashMap静态成员camStatus,并对外提供访问该成员的静态方法,这些方法都由synhronized关键字修饰,以保证数据的线程安全性。该类的实例化操作在系统启动时进行:首先根据数据库内容填充camStatus。然后在固定端口建立Socket监听等待摄像头消息的到来。CameraMonitor类实现摄像头状态维 北京邮电大学硕士学位论文护功能。它继承了java.util.TimerTask,在系统启动时开始运行,周期性的减小camStatus中摄像头计数器的值,并将计数器为0的摄像头状态置为离线。Relay包对应中继管理子模块,如图4-23所示,其中proxyInterface包对应代理接口子模块,PeronMonitor类对应人数监控子模块,PeriodCheck对应定期检查子模块。PeriodMonitor类包含一个保存SDP文件名到对应观看人数的HashMap静态成员SDPToPersonNum并对外提供访问该成员的静态方法,这些方法都由synhronized关键字修饰。同时它对外提供增加/减少人数的方法,这些方法中包含了操作中继方法的调用。PeriodMonitor类继承了java.util.Tim.'Task,在系统启动时开始运行,它建立到流媒体服务器的连接,通过该连接周期性发送SDPToPcrsonNum中所有SDP文件的查询信息,并根据结果确定是否需要删除该中继。如图4-23所示,proxyInterface包含了ProxyConnections,ProxyListcner,HeartBeat,RelayControl,ResultListoner五个类。ProxyConnections类维护代理口地址与代理到目录服务器TCP连接映射关系。它包含一个保存代理P地址到连接该代理Socket映射的HashMap静态成员proxyConneetions,并对外提供访问该成员的静态方法,这些方法都由synhronized关键字修饰。ProxyListener类在固定端口建立Socket监听,一旦有代理的连接请求到来它就接受该连接,生成一个Socket对象,并将远端m与这个对象保存进proxyConnections中。HeartBeat类继承自java.util.TimerTask,它定时向proxyConneetions中所有连接发送心跳信息,若发送过程出现异常则从proxyConnections记录中删除该代理的记录。RelayControl有一个保存SDP文件名到执行该中继建立任务线程映射的HashMap静态成员relayTasks,这些方法都由synhronizeA关键字修饰。该类对外提供增加或删除中继的方法。中继建立任务RelayTask为该类的一个内部类,它查询camStatus与proxyConnections得到摄像头对应代理的TCP连接,通过该连接发送命令后进入阻塞,直到被唤醒后返回。每当创建一个执行RelayTask的线程后,便会在relayTasks中增加相应记录。ResultListener使用java.nio.selector实现,它同时监听所有到中继的TCP连接。一旦某连接有消息到来,它便根据消息中的SDP名在relayTasks中查找相应线程,并将其唤醒。41 北京邮电大学硕士学位论文4.5本章小结本章介绍了目录服务器的设计与实现。首先进行了目录服务器的需求说明,分别从管理员与用户两种角色对需求进行了阐述。然后介绍了目录服务器的总体设计。接着,按照模块对目录服务器的详细设计与实现进行说明,重点介绍了用户管理模块,摄像头管理模块,告警管理模块与摄像头观看模块。最后介绍了目录服务器的实现。42 北京邮电大学硕士学位论文第五章代理服务器的设计与实现代理服务器是网络实时监控系统的接入部分,它为目录服务器提供控制摄像头的渠道,为摄像头提供将数据上传至流媒体服务器的数据通道,并为管理员提供了对摄像头上传数据进行控制的功能。本章将对代理服务器的设计与实现进行详细说明。5.1代理服务器需求分析基于RTSP/RTP的流媒体代理服务器完成的功能是代理位于同一私网中的所有摄像头,使得从私网外部看来,代理服务器就像是多个摄像头的集合体。与一般摄像头不同的是,首先,在这个集合体中即使是被动摄像头也具有主动注册功能,能够周期性向服务器上报自身信息。其次,服务器可随时向集合中的任何摄像头发出控制信息,就像这些摄像头位于公网上一样。最后,这些摄像头能够根据管理员的配置,选择数据上传的方式以及所要上传的数据。代理服务器位于与摄像头相同的私网中,每个部署了摄像头的私网都需要一个代理服务器,如图5.1所示。摄像头图5—1代理服务器的部署位置5.1.1摄像头的主动注册功能实时监控系统中被动式摄像头不能主动将自身信息上报给服务器,必须由管理员自行添加。代理服务器可以周期性的将位于同一局域网的被动式摄像头信息上报到目录服务器,从而实现被动式摄像头的主动注册以及状态维护。上报信息包括摄像头MAC,内部IP(即摄像头的私有IP),外部IP(OP摄像头所属私网中43 北京邮电大学硕士学位论文出口路由器的公有口)。关于摄像头码流格式的信息需要管理员手动修改。与代理服务器位于同一私网的主动式摄像头也将报到信息发送至代理服务器,这样所有的摄像头报到信息将由统一格式提交至目录服务器。5.1.2摄像头中继管理功能摄像头与服务器间的媒体传输控制是通过服务器向摄像头发起的RTSP会话完成的,但如果摄像头位于私网内部对于公网不可见,那么位于公网的服务器将无法向摄像头发起通信。代理服务器的另一功能就是采用某种机制使内网摄像头对于目录服务器变得可见,目录服务器通过对代理发送中继管理命令达到对摄像头直接发送中继管理命令一样的效果,中继建立后,摄像头的数据通过代理转发到流媒体服务器。无论被动摄像头还是主动摄像头,他们都通过代理接受来自目录服务器的中继命令。5.1.3摄像头上传配置功能管理员通过对代理服务器的配置可以对摄像头与流媒体服务器间的媒体传输进行控制。控制的内容包括:1采用何种传输层机制承载RTP数据:提供TCP与UDP两种选择。2选择摄像头上传的媒体内容:提供上传音频与不上传音频两种选择。8.1.4摄像头告警处理与转发功能代理服务器接收所有通过它接入到网络实时监控系统的摄像头的告警信息。它对所有的告警信息进行处理,并重新组装成统一格式的信息发送至目录服务器。5.2代理服务器设计说明代理服务器包含三个模块:配置模块,消息代理模块与中继代理模块,代理服务器系统设计以及与目录服务器,流媒体服务器的通信关系如图5-2所示。代理服务器启动后由配置模块初始化消息代理模块与中继管理模块。消息代理模块代理所有摄像头的注册消息,以及告警消息。它与环境的消息交互根据摄像头的不同采用UDP或TCP协议。消息代理模块将摄像头报到信息处理为统一格式的注册信息后将其发送至目录服务器的注册维护子模块,同时,它还负责将摄像头告警信息处理为统一格式的告警信息后将其发送至目录服务器的告警处理子模块。中继代理模块实现了服务器对位于内部网络摄像头的控制以及媒体数据的转发。它接收来自目录服务器中继管理子模块的控制命令,执行后向中继管理子模块发送执行结果。来自服务器的控制命令与执行结果的传输直接使用TCP协议。它分别与摄像头,流媒体服务器的中继服务模块进行RTSP协商并将摄像头发送的RTP数据转发至中继服务模块。同时,分别向摄像头与流媒体服务器户,.-●h 北京邮电大学硕士学位论文转发对端发送的RTCP统计数据。在代理服务器—摄像头侧存在的视频与音频分别承载于两路RTP的媒体流,这两路媒体流组成一路中继,由一个RTSP会话控制。而在与代理服务器一服务器侧,有可能存在音频视频两路媒体流,也可能只存在一路视频流,无论哪种情况,他们与摄像头侧一样,由一个RTSP会话控制。主动的报被动{询,摄像;配置模块初始化Il初始化像头||信息.p么——_]3司E=到消辫Li警信息.1IRTS科协商统的报到信统的告警信据中继代理模块继控制命令i执行结果RTSP协商RTP数据RTCP数据目录服务器注册维护告警处理中继管理中继服务代理服务器lI流媒体服务器图5-2代理服务器结构以及外部通信5.2.1配置模块配置模块读取配置文件,并根据配置文件初始化消息代理模块与中继管理模块。配置文件的内容包括两部分内容:一部分为目录服务器地址,目录服务器监听摄像头信息的端口,目录服务器监听告警信息的端口,代理服务器所支持的摄像头型号等,这些配置信息用来初始化消息代理模块。另一部分内容包括目录服务器监听代理TCP连接请求的端口,流媒体服务器地址,流媒体服务器的RTSP监听端口,数据上传方式,上传数据是否包含音频等,这一部分配置信息用来初始化中继管理模块。配置模块所读取的文件是一个名为proxyconfig.xml的XML文件。该文件所包含的元素以及元素代表含义如下:I12.95.146.6</darwin—IPADDR>554</RTSPa)ort>45 北京邮电大学硕士学位论文no</audio_upload>UDP</uploadtransport>112.95.146.6</catalo出DDR>10000</camerainfo__port>10001</command__port>10002</camera_alarm_port>9160</type>true</enable></camera>autotools</type>false</enable></camera></camera_support_list></vedio_sys_config>需要说明的是upload_transport元素配置的值仅在audioupload元素值为no时有效。若配置文件中audi0_upload元素值为上传音频,系统将把uploadtransport值默认为UDP,无论实际配置是什么。5.2.2消息代理模块消息代理模块的主要功能为将所有摄像头的注册消息与告警消息处理为统一格式信息发送至目录服务器,这样避免目录服务器对不同摄像头还要做不同的处理。消息代理模块向目录服务器发送的摄像头信息与告警信息两种消息格式如表所示。_,^-●k 北京邮电大学硕士学位论文表5-1代理服务器发送的消息格式消息类型消息内容及格式目录服务器的处理camerainformation:mac/摄像头MAC地址:解析各项信息,并将承载该ip/摄像头IP地址:消息数据包的IP源地址作注册消息httpport/摄像头http端口:为摄像头所属代理服务器rtspport/摄像头的rtsp端地址口:cameraalarm:告警消息mac/摄像头姒C地址:解析各项信息alarmtype/摄像头告警类型:要实现上述功能,消息代理模块必须解决两个问题:被动摄像头的主动注册问题,与多种设备的适配问题。消息代理模块对于同一个局域网中的主动式摄像头,只需监听摄像头的报到端口便可得到摄像头的报到消息。但被动摄像头不具备主动发送注册消息的功能,因此不能通过该方式解决被动摄像头的主动注册问题。被动摄像头虽然不能主动向服务器发出消息,但当它收到一个特定的查询消息后会发出回复,内容包括MAC地址等信息。消息代理模块利用该特性,定时向私网广播查询消息,当收到摄像头回复后便将该消息转换为注册消息格式,并转发注册消息到服务器,由此完成被动摄像头的主动注册功能。消息代理模块只包含一个消息管理进程,该进程完成定时发送查询消息,接收并处理回复消息,转发注册消息等子功能。被动摄像头的注册过程如图5.3所示。图5-3被动摄像头注册流程如图5.3所示:(1)代理服务器向局域网广播查询消息47 北京邮电大学硕士学位论文(2)摄像头向代理服务器回复应答,代理服务器对其进行处理(3)代理服务器向出口路由器发送注册消息,该消息Ⅲ包头的目的地址为目录服务器地址,消息内容包含了摄像头的P—B(4)出口路由器向流媒体服务器转发注册消息,此时消息的口包头的源地址替换为路由器的公网P..A。不同的生产厂家提供的摄像头报到的方式与消息格式是存在差异的,例如摄像头A向所配置服务器的10146端口发送报到信息,格式为XML;摄像头B向所配置服务器的80端口发送报到信息,格式为HTML。另外,不同的被动摄像头所能识别的查询消息与所发送的回复消息格式也是不同的。为了对所有摄像头设备进行支持,代理需要分别对不同类型的摄像头进行适配。对于主动摄像头,我们需要为不同类型的摄像头建立不同的端口建立监听,并为他们进行不同的解析。假设目前系统中存在上面例子中的摄像头A与B,那么代理需要在10146与80端口分别建立监听,并对两者报到消息的分别进行不同的解析过程,最后将他们处理为统一格式的报到消息发送到目录服务器。对于被动式摄像头,我们可以通过广播不同的查询消息来保证得到所有摄像头的回复。对于不同回复消息的处理方法同主动摄像头一样,通过在不同的端口接受回复消息,并使用不同的解析方法对其进行处理,最后将处理后的消息发送至目录服务器。配置文件的元素配置了系统中所需支持的摄像头类型,配置模块通过解析该元素,对消息代理模块需要建立的监听以及广播的查询消息列表进行初始化。这为程序的扩展也带来了便利。每当系统中新增一个摄像头,开发人员仅需写明它注册消息发往的端口,按照接口规定实现它的注册消息处理方法,对于被动摄像头还需写明它所能识别的查询消息。接着在配置模块中新增对该型号摄像头的初始化分支,并在配置文件中增加该摄像头的配置就可以了。当代理启动时,配置模块会建立对该类型摄像头的监听,并在消息到来时调用相应的解析方法,对于被动摄像头,查询消息定时广播任务会在初始化时将相应的查询信息添加到广播列表中。告警消息的适配同注册消息的方式一样。综上所述,代理模块完成初始化后包含如图5.4所示的数据与任务:一组监听任务以及一个查询消息广播任务,与目录服务器注册维护模块以及告警处理模块通信的套结字连接。这些监听任务各自对应了一种摄像头的消息接收以及处理流程,他们在特定端口接收消息,在收到消息后启动自己的处理流程,最后将处理后消息通过与目录服务器连接的套结字发送出去。注册消息与告警消息分别通过注册消息发送套结字与告警消息发送套结字发送。查询消息定时广播任务定期发送消息列表中所 北京邮电大学硕士学位论文有的查询消息,这样被动摄像头也可同主动摄像头一样,周期性的向代理服务器发送注册消息。图5-4消息代理模块结构5.2.3中继代理模块由于私网中无论主动摄像头还是被动摄像头,他们的地址都对外网不可见,所以在网络外部不能直接对其进行控制。中继代理模块解决了服务器对私网摄像头的控制问题,其主要功能为接受外部的控制信息.建立或删除私网内摄像头到服务器的中继。该模块包括一个数据结构以及三个进程。模块的设计如图5.5所示。数中继代理由一>|Il、创建读取,修改记录RTSP处理创建差控制命令执行结果RTSP协商RTP数据RTCP数图5-5中继代理模块结构1.中继任务表:记录了中继名称(SDP文件名)与控制该中继的RTSP进程之间的对应关系。49}一一LP一盯 北京邮电大学硕士学位论文2.命令接收进程:建立到目录服务器的TCP连接,接收并执行来自服务器的控制命令。3.RTSP处理进程:完成摄像头到服务器间媒体传输(以下简称中继)的建立与删除,负责传输资源的分配与回收。4.RTP/RTCP转发进程:转发媒体数据和RTCP消息。系统中包含两种转发进程,UDPUDP转发进程的接收端与发送端都采用UDP传送数据。UDPTCP转发进程在接收端采用UDP接收数据,而在发送端采用TCP发送数据。命令接收进程在代理服务器启动时由配置模块进行初始化:根据配置文件中目录服务器的地址以及监听代理服务器请求的端口向目录服务器发起一个TCP连接请求,目录服务器的代理接口子模块收到该请求后会建立该连接,并在代理对应表中对该连接进行记录。由于TCP连接的双向性,服务器可随时通过该连接向代理发送控制命令,并且这个连接也是目录服务器能够向代理发送信息的唯一通道。在TCP连接建立后,命令接收进程会在代理服务器运行期间一直与服务器保持该连接,并通过代理接口子模块中的心跳维护进程定周期发送的心跳信息保持连接的可用性。当命令接收进程发现TCP连接不可用后(长时间未收到心跳信息),会立即向所配置的地址再次发起一个连接请求。命令接收进程的运行流程如图5.6。图5-6命令接收进程流程50一r-●k 北京邮电大学硕士学位论文1.命令接收任务在启动时向所配置的目录服务器地址与端口发送TCP连接请求,然后进入2。2.命令接收任务进入等待连接建立状态,等待目录服务器返回的连接建立结果。3.在等待连接建立状态下,若连接建立失败则设置一个定时器,等待该定时器超时后再重新发起连接请求,然后进入2。4.在等待连接建立状态下,若连接建立成功,则启动心跳定时器,并进入5。5.命令接收任务进入等待命令状态,等待控制命令的到来。6.在等待命令状态下,若接收到心跳信息,则重新启动心跳计时器,并进入5。7.在等待命令状态下,若接收到心跳计时器超时的信息,则说明该连接不可用,任务重新向目录服务器发送连接建立请求,并进入2。8.在等待命令状态下,若接收到建立中继的命令,则创建一个RTSP处理进程进行RTSP协商,并在中继任务表中添加相应记录,然后返回5。9.在等待命令状态下,若接收到拆除中继命令,则在中继任务表中查找负责该中继的RTSP进程,向其发送停止中继的消息,并删除中继任务表中的记录,然后进入5。该进程所处理的建立中继于拆除中继两种控制命令如表5.2所示。表5-2控制命令列表命令格式作用参数名称参数含义参数格式relay-J1锄e中继名称,在服务器上以以.sdp结尾s21chnut1-i建立一路摄此唯一标识一条中继[relay_name]/像头到服务摄像头一路码流的资源rtsp://[摄像头定位标识,所有摄像头的IP]:[摄像头RTSP端[URL]器的中继URL每一路码流都有一个唯u]/[摄像头码流]一的URLs21chnutl—d删除指定的中继名称,在服务器上以以.sdp结尾[relay_name]中继relay-name此唯一标识一条中继命令进程收到控制命令后便进行解析以确定所需执行的操作与参数。若操作为建立中继,则该进程创建一个RTSP处理进程,并记录中继名称与RTSP处理进程的对应关系;若操作为删除中继,则根据中继名称找到对应的处理进程,向该进程发送结束信号,删除记录。RTSP处理进程实现了控制摄像头到服务器间的中继建立与删除过程。每当建立一路摄像头到流媒体服务器的中继,代理服务器就会创建一个RTSP处理进程。每一个RTSP处理进程包含了两个RTSP会话:与摄像头的IHSPpull会话 北京邮电大学硕士学位论文以及与流媒体服务器的RTSPpush会话,这样该进程可以对两侧的RTP传输进行控制。每个RTSP会话又包含了当前会话ID,请求序列号,描述当前媒体的SDP文件,传输媒体的本地端口号以及对端端口号等信息,push会话还记录了执行该路媒体数据转发任务的RTP/RTCP进程。中继建立过程分为两个阶段完成。第一阶段为代理服务器向摄像头拉(pull)数据,即向摄像头请求媒体数据。该过程中代理服务器与摄像头的通信过程如图5.7所示。图5—7RTSP的pul1过程1.RTSP处理进程首先向摄像头发送descirbe,请求所需媒体的描述信息。2.摄像头收到descirbe请求后向代理服务器回复2000k,并在回复中附带媒体的SDP描述信息。3.RTSP处理进程对SDP信息进行解析,根据SDP信息中包含的媒体流(一般为音频流和视频流)分别发送setup请求。在发送请求时该进程需要先为媒体流的传输分配端口,并在setup请求中将端口号作为参数通知对方。在摄像头的回复中会带有摄像头端的数据发送端口号,并记录对应的远程端口。4.收到摄像头建立成功的回复后该进程发送play请求,通知摄像头开始发送媒体数据。至此,代理服务器与摄像头的pull过程完成。Pull过程为代理服务器向摄像头请求RTP数据的过程,当数据到达代理服务器后,对于所要向流媒体服务器所上传的内容与传输机制的控制则在push过程中进行控制。具体方法为,在配置模块对中继代理模块进行初始化时,会将配制信息中的audioupload与upload元素信息保存至模块中。当.transportRTSP进程完成Pull过程进一步启动push过程时,将根据这两条信息与流媒体服务器进行RTSP协商.代理服务器与流媒体服务器问push过程的通信流程如图5.8所示。52,-●■ 北京邮电大学硕士学位论文图5-8RTSP的push过程1.Push过程由RTSP处理进程发送越lnouD_co请求发起,8Jlp_ouncc请求消息中附带了所要推送的媒体的SDP信息,该SDP信息由RTSPpull会话中的SDP信息修改得来。Push过程启动后首先检查audioupload的值,并根据配置的值对SDP信息进行修改:若配置为不上传音频数据,则需要去掉SDP中对音频的描述部分。修改前的SDP信息如下;v--O0:=-1lIN口4127.0.0.1s=VStreamLivei--ICLStreamingMediac=INIP40.0.0.0t=OOm--video0I玎P/AVP96a=rtpmap:96MP4V-ES/90000a=fintp:96profile··level--id=l;config=000001B001000001850900000100000001200086C400670C5Al120518Fa=control:tracklD=0re=audio0RTP/’AvP14a=fmtp:14config=0050000100003e8000000fa001200000a=control:仃acklD=l在该信息中我们可以看到,描述信息中包含了m--video0RTP/AVP96与m=audio0RTP/AVP14两个媒体流,分别为视频与音频。假设目前不需要上传音频,对于SDP的处理除了替换所有者/创建者和会话标识符以及连接信息外,还需删除关于音频的描述信息。修改后的SDP文件如下所示:53 北京邮电大学硕士学位论文v--0o=11INm4127.0.0.1s=VStreamLivei=ICLStreamingMedia萨INIP4192.168.169.144t--00m--video0贼|AVP96a=rtpmap:96MP4V-ES/90000a--fmtp:96profile-level—id=l;config--0000018001000001850900000100000001200086C400670C5Al120518Fa-=control:trackID=O2.在收到服务器对allnounce请求的回复后,代理服务器针对SDP信息所包含的媒体流发送setup。在发送setup请求前,需要检查upload_transport元素所配置的值。若配置为UDP,则setup过程与pull过程中的一致。若配置为TCP,则该过程无需为RTP数据传输分配端口,直接在SETUP请求中说明传输模式即可,而传输RTP数据所需要的TCP连接则直接使用RTSPpush所建立的TCP连接。3.最后代理服务器发送play请求,通知服务器开始接收媒体数据。在收到流媒体服务器2000K的回复后,RTSP处理任务根据upload_transport元素的值创建一个UDPUDP或UDPTCP的RTP/RTCP转发进程。建立的RTP/RTCP转发进程将被记录在该push会话中。中继删除过程也分为两个阶段:当收到结束信号后,RTSP处理进程先与服务器停止push,再与摄像头停止pull。停止Pull与push的过程是一样的,如图5-9。当pull与push都结束后,该进程终止自己所创建的RTP反射进程,释放所分配资源,随后终止。图5-9pull与push的终止RTP/RTCP转发进程不对RTP以及RTCP协议做任何处理,它只是转发所收到的数据。每当所监听端口有数据到达,转发进程就将根据入端口将数据从相应,’尊{k 北京邮电大学硕士学位论文出端口转发。对于UDPUDP转发进程,每一路音频与视频都对应各自对应一组端口,当从任意入端口接收到数据后,转发进程寻找相应出端口,并转发数据。在上传音频模式下,入端口与出端口的对应关系如表5.3所示。当audioupload元素为不上传音频时,在代理服务器上只有摄像头侧有接收音频的端口,而在流媒体服务器侧不存在发送或接收音频RTP/RTCP数据的端口,此时的端口对应关系如表5_4所示。转发进程对音频数据的处理为接收后直接丢弃,不做转发操作。表5-3UDP—UDP转发进程上传音频模式下入端口与出端口对应表监听端口接收数据类型对应转发端口与摄像头协商的本地RTP端口1视频与服务器协商的本地RTP端口1与摄像头协商的本地RTP端口2音频与服务器协商的本地RTP端口2与摄像头协商的本地RTCP端口1视频发送报告与服务器协商的本地RTCP端口l与摄像头协商的本地RTCP端口2音频发送报告与服务器协商的本地RTCP端口2与服务器协商的本地RTCP端口l视频接收报告与摄像头协商的本地RTCP端口l与服务器协商的本地RTCP端口2音频接收报告与摄像头协商的本地RTCP端口2表5-4UDP—UDP转发进程不上传音频模式下入端口与出端口对应表监听端口接收数据类型对应转发端口与摄像头协商的本地RTP端口l视频与服务器协商的本地RTP端口1与摄像头协商的本地RTP端口2音频丢弃与摄像头协商的本地RTCP端口1视频发送报告与服务器协商的本地RTCP端口l与摄像头协商的本地RTCP端口2音频发送报告丢弃与服务器协商的本地RTCP端口1视频接收报告与摄像头协商的本地RTCP端口lUDPTCP转发进程,只能应用于不上传音频的模式中。因为若配置文件中audioupload元素值为上传音频,系统将把upload值默认为处理。当元素为不上传音频,..tran元sp素or为t时,UDPaudiouploadtransportTCPRTSP处理进程将启动UDPTCP转发进程。该进程将把接收到的视频数据通过与流媒体服务器RTSP会话所建立的TCP连接发送至服务器,音频数据,以及RTCP数据将直接丢弃。综上所述,代理服务器对摄像头的管理流程如图5.10所示。(1)代理服务器启动时向目录服务器发起TCP连接请求,目录服务器接受此连接并记录源端IP~A与这个连接的对应关系。(2)用户向目录服务器发出建立某个摄像头中继的请求。(3)目录服务器查找该摄像头的信息,得到该摄像头的外部IP为A,再根据A找到对应的TCP连接。目录服务器通过该TCP连接向代理服务器发送命令。(4)代理服务器收到命令后解析出摄像头IP,码流等参数,向摄像头发起RTSP的pull流程。55 北京邮电大学硕士学位论文图5一lO通过代理服务器的中继建立过程(5)puU完成后摄像头开始向代理服务器发送媒体数据。(6)代理服务器向流媒体服务器发起RTSP的push流程。(7)push完成后,代理服务器将摄像头发来的媒体数据转发到流媒体服务器。通过代理服务器删除中继的流程与上面基本相同,只是代理服务器在收到删除命令后先拆除与流媒体服务器的push连接,再拆除与摄像头pull连接。5.3代理服务器的实现与系统测试代理服务器采用java语言,在LINUX系统中使用MyEclipse开发环境编码实现。它存放在名为proxy_server的文件夹下,工程的组织结构如图5-11所示。嗣薯茹proly:s·r憎{审.-留biai审,融蟛t;;国⋯《》CamIlLfomodul,l;国、一留Co眦ndgec,iv,||囱沥main;i国~‘》RTPmoda.1.;;国一涵RTSPmodu.I,;卜圆.cl-譬印-th;;⋯豳.Frojeet图5-11代理服务器工程组织结构proxy_server下的STC文件夹存放工程源代码,bin文件夹存放对应源代码编译后的.class文件。Src文件夹下包含camInfomodule,commandReceive,main,RTPmodule,RTSPmodule五个包,他们实现了代理服务器的全部功能。下面分别介绍代理服务器中每个模块的实现。5.3.1配置模块与消息代理模块的实现src下的main包对应代理服务器中的配置模块,它所包含的类如图5.12所示。,一。-L,亡’,-~ 北京邮电大学硕士学位论文争’9掣n;≯函CmConficInfo.jiv.;;⋯幽FrozTStrver.jw-图5-12配置模块结构ProxySel"Vet类中包含整个代理服务器工程的入口函数,也记录了代理服务器关于上传方式,是否上传音频等配置信息。Cameraonfiglnfo类提供对代理服务器配置文件的解析功能。代理服务器启动后,首先实例化CameraonfigInfo对象,并对配置文件进行解析,然后根据解析得到的目录服务器地址,端口,以及所需支持的摄像头类型启动消息代理模块与中继代理模块,并将上传方式,是否上传音频等信息保存在静态变量中供其他类访问。camhfomodule对应消息代理模块,它的结构如图5.13所示。矽眵CmInfooodulei审”白matotools;;卜豳CmAutoTooZsAl锄rmTransuit.j叭{l卜豳CmAutoToolsInfoPtrstr.jw·;ik“豳CmAutoToolsInfoTrmmlit·jiv.;审·珏cmer型9160;;≯’豳CmglSOAlsrsTrnnsmit.jm{i卜因Cmgl60InfoPerser.j竹t{|。⋯豳Cm9160InfoTr嘲it·j·n{盛⋯螽》hu,nSh.卜豳c-№n豳eAlmrmTrz枷mit.j叭卜国Cmlhaa曲eZnfoPerser.jl*l争豳CmdhmxghelnfoTranmit.j竹-i⋯豳c铺MIl姐幽ee]uerIPSerider.jw··§》qi钳喀,铂I罨卜豳c_qi啦伊n弓111盯_Tr·n弱it.jm,豳c拍日i啦F呱dnfoPLrser.java卜豳ca呐i缸笋札四u盯,rsender.j撇:⋯豳ca呐i蛆斟姐gTraasait.j钾t~豳CmInfoTr型nsmit.j盯毫图5-13消息代理模块结构该文件夹下的四个包分别对应目前系统支持的奥视(autotools),9160,黄河,强网四个厂家设备的消息处理类。其中奥视,9160设备为主动摄像头,对于他们的消息处理类仅包含告警信息转发类(AlarmTransmit),注册信息转发类(InfoTransmit),与信息解析类(InfoParser)。而黄河与强网的设备为被动摄像头,他们的消息处理类除了上述主动摄像头所包含的三个类外,还包括一个查询消息发送类(QuerySender)。CarnlnfoTransmit为一个抽象类,它继承了Runnable接口的抽象方法run,所有关于摄像头信息转发的类都必须继承该类并实现其run方法。代理启动时,配置模块会根据配置的摄像头列表创建相关摄像头的告警信息转发任务与注册信息转发任务。57;;;;;;;隧:;:;;;;;k 北京邮电大学硕士学位论文5.3.2中继代理模块的实现CommandReceive,RTSPmodule,RTPmodule共同对应代理服务器中的中继代理模块,他们包含的类如图5.14所示。I蔷》盯SPmodql·}¨.团RdayTjw-I团h,poaseP,a'se.j叭}.国ILTSPFullSession.javl勃C一,mmendgeeeiv·≯·国RTSPFushSession.jmp’蛰ComandH啦dl,r·j押·.白》RTP_odul·0豳RT$I'Session.j蚍≯’婴...C⋯on⋯s⋯U⋯L⋯ts⋯,.⋯jav_a}.国?CPS·l,e(or.j自,va;⋯囡$treemlnfo.j盯毫i⋯幽l墅!苎臻!!!!圭j坚苎l|国UDPSel,etor.j∞嚏图5-14中继代理模块结构CommandReceive对应中继代理模块中的命令接收进程,它所包含的三个类作用如下:RelayRecord类对应中继任务表,记录中继名称到该中继任务(RelayTask)的对应关系,并对外提供线程安全的访问方法。CommandParse类提供对命令的解析方法。CommandHandler类实现了Runnable接口,需赋予一个线程类(Thread)执行,它负责代理服务器与目录服务器间TCP连接的建立/保持,命令的接收,与中继任务的启动。该类由配置模块初始化并启动。任务启动后,首先向所配置的目录服务器地址与端口建立TCP连接(该连接的可用性由心跳信息保证),然后在该连接等待命令的到来。当命令到来后,它利用CommandParse提供的方法进行解析,然后根据操作类型创建或停止中继任务。RTSPmodule对应中继代理模块的RTSP处理进程,如图5.14所示,它所包含的六个类作用分别如下:1.RelayTask类封装了一个中继任务的全部信息,它包括摄像头侧的RTSP会话任务,与流媒体服务器侧的RTSP会话任务以及RTP转发任务。它实现了Runnable接口,由CommandHandler类创建并启动,它首先与摄像头进行RTSP的pull过程,成功后再向流媒体服务器进行RTSP的push过程。2.RTSPSession类抽象出了所有RTSP会话任务的共有数据与方法,包括到对端的RTSP传输层连接(TCP连接),该会话所控制的媒体流列表(StreamInfo),描述该中继的SDP文件,以及发送请求,接受回复的方法等,每个RTSP会话都对应一个lⅡSPSession对象。3.RTSPPullSession类继承自RTSPSession,是摄像头侧的RTSP会话任务,实现了代理服务器向摄像头拉数据的协商过程,由中继任务创建。4.RTSPPushSession类也继承自RTSPSession,是流媒体服务器侧的RTSP会话任务,实现了代理服务器向流媒体服务器推数据的协商过程,它除了保存RTSP会话信息外,还保存了本路中继的RTP/RTCP转发进程。该类初始化时会检查配置模块中保存的上传方式与是否上传音频等信息,对I玎sPPulls鹤sion中的SDP文件进行处理从而得到本会话的SDP文件,在RTSP协商成功后,根据58 ’一‘_~北京邮电大学硕士学位论文参数的不同创建UDPUDP转发进程或UDPTCP转发进程。5.ResponseParse类为RTSPSession的子类提供解析RTSP回复消息的功能,主要包括对状态码,RTP端口号的解析等信息的解析。6.StreamInfo类封装了每一个媒体流的信息,主要包括该媒体流的远端端口,本地端口,名称等。RTPmodule对应RTP/RTCP转发进程,如图5.14所示,它所包含的两个类UDPSelector与TCPSelector分别对应UDPUDP与UDP.TCP两种转发进程。它们根据RTSPSession对象中的Streamlnfo对象列表进行初始化,在接受端口建立监听进行RTPFRTCP数据的接收,并根据端口对应表进行数据的转发。5.3.3系统测试结果根据图3.1,搭建测试环境如下:黄河摄像头(被动),9160摄像头(主动)与代理服务器位于同一私网,口分别为192.168.0.158,192.168.0.159,192.168.0.144。出口路由器的公网口为125.34.195.136目录服务器与流媒体服务器运行于同一台主机,该主机位于公网,口为59.64.178.90。代理服务器在启动后,两个摄像头自动注册到目录服务器,上传信息如图5.15所示。雾7粼《遁巫两[二];;’磐、7瓣[二二二二]乏’移。,、、。燃非主动轰雌迫0051DEBl003]∥、‘内橛厘遁巫匿]移捧瓣;垂麴撼亟E]《燃疆豫匦二二二二二]i,粤端薅毒厘二二二]图5-15代理服务器上报的摄像头信息用户通过观看页面向摄像头发出观看请求。以黄河摄像头为例,首个用户发出观看请求后大约3秒,流媒体服务器的movies文件夹下出现关于该摄像头中继的SDP文件00051DE81003.sdp,该文件的出现说明摄像头到流媒体服务器的中继建立成功。此时用户播放器OuickTime显示,目前所播放的媒体URL为rtsp://59.64.178.90/00051DE81003.sdp,得到的摄像头监控图像(实验室一角)如图5.16所示。第二个用户通过观看页面向该摄像头发出观看请求,此时通过抓包发现,摄像头与流媒体服务器问没有再次建立中继,第二个用户的播放器通过访问相同的URL得到了相同的监控图像。第二个用户保持观看,而第一个用户停止观看后,流媒体服务器上的SDP文件没有被删除,且用户依然能够得到59 北京邮电大学硕士学位论文该摄像头的监控视频。第二个用户停止观看后大约1秒,流媒体服务器上的SDP文件00051DE81003.sdp自动删除,通过抓包发现,该摄像头与流媒体服务器间的数据传输停止。5.4本章小结图5-16监控视频本章介绍了代理服务器的设计,首先对代理服务器的需求进行说明,然后介绍代理服务器各个模块的设计与工作原理,最后介绍了各模块的实现方式,并对系统测试结果进行展示。刊尹~§ -一‘●.-北京邮电大学硕士学位论文6.1论文工作总结第六章结束语论文设计并实现了一个网络实时监控系统。该系统由网络摄像头,代理服务器,目录服务器,流媒体服务器,用户终端等节点通过网络互联组成,采用流媒体技术为用户提供实时监控视频的观看。系统使用目前市场上现有的网络摄像头作为系统中的图像采集点,采用开源达尔文流媒体服务器作为流媒体服务器转发数据的核心模块,目前支持流媒体格式的播放软件都可以作为用户终端进行监控视频的播放。论文设计并实现了目录服务器与代理服务器,提供摄像头自动注册,中继自动控制等功能。目录服务器为用户提供了目录服务,告警短信通知,监控视频观看等功能。为管理员提供了控制用户访问控制,摄像头自动注册功能,状态维护,数据传送自动控制等功能。代理服务器为系统提供摄像头主动注册,中继管理,上传配置,统一摄像头信息与告警信息的发送等功能。相比于现有的系统,该系统实现了以下特有的功能:1.对所有摄像头设备的自动化管理:所有摄像头开机后会自动在系统数据库中添加自己的信息,免除了管理员手动添加的操作。另外随着摄像头信息的更新,系统数据库中的记录也会同步更新。不具备主动报到功能的摄像头也一样可以具备该功能。2.对摄像头设备状态的实时维护:当摄像头关机或与系统的网络连接异常中断后系统将该摄像头状态设置为离线,当摄像头恢复工作以及网络连接后,状态将恢复为在线。该功能可方便管理人员监控摄像头的工作情况,及时进行维护。不具备主动报到功能的摄像头也一样可以具备该功能。3.对摄像头上传数据的自动控制:当摄像头首次被观看时,自动建立摄像头到流媒体服务器的中继,当最后一个用户对摄像头停止观看时自动拆除摄像头到流媒体服务器的中继。该功能避免了无用数据在网络上的传输,极大节约了网络流量。同时也减轻了摄像头的工作负担,延长了设备的使用寿命。4.对摄像头上传数据的配置:管理员可对摄像头上传至流媒体服务器的数据进行配置,包括是否上传音频数据,选用何种传输机制。该功能可灵活控制数据上传方式,并根据网络状况取得最好的监控效果。5.对各种设备差异的屏蔽:通过代理服务器适配所有的设备,对目录服务器提供统一的信息格式与告警消息格式,避免在目录服务器端对各种设备分别采61 北京邮电大学硕士学位论文用不同的处理流程。6.基于时间对用户的摄像头观看权限自动管理:按时间对用户的摄像头观看权限进行自动管理。当用户对某个摄像头的观看权限到期,用户将无法再次访问到该摄像头。该过程无需管理员手动更改,时间管理粒度精确到小时,为系统的运营提供了灵活性与便利性。本人在项目中主要负责系统整体设计,目录服务器详细设计,目录服务器业务逻辑层与接口层实现,代理服务器详细设计与实现等工作。6.2问题与展望目前用户对监控系统应用的需求越来越多样化,对图像质量的要求也越来越高,系统还可在以下方面继续扩展:1.实现用户与摄像头设备的互动,用户可以通过系统对摄像头进行控制,譬如云台转动,变焦等。2.实现监控视频的录制,回放功能.3.从改善摄像头设备的编码效率,提高代理服务器,流媒体服务器的转发效率等方面增强系统的实时性。4.通过在代理服务器使用缓冲策略,改善系统中视频音频的上传质量。5.在服务器端增加对摄像头的加密机制,防止用户绕过服务器直接对摄像头进行访问。62醇-’●_对,^q● ●'J-一{I北京邮电大学硕士学位论文致谢两年半的研究生生活即将结束,我在专业知识,开发研究等各方面能力都得到了很大提高,这与培养我的北京邮电大学、指导,关心,帮助我的老师与同学是密不可分的。首先,要衷心感谢我的导师宋茂强教授,本论文从选题、背景研究、项目设计、编码实现、到最后的文字撰写都得到了宋老师的悉心指导。宋老师不仅在学术方面给予我们耐心的教导,在生活上也对我们关心有加。从宋老师这里,我学习到的不仅是专业知识,更重要的是一种研究学习的思想与方法,以及为人处世的态度,相信它们在我今后的工作与生活将发挥巨大而积极的作用。在此还要感谢实验室里的各位同学,他们在项目的开发过程中给与我许多的帮助与支持。实验室中和大家度过的那段忙碌而充实的快乐时光,我将永远铭记于心。最后,向参加论文审阅、答辩的专家和老师们表示感谢! 北京邮电大学硕士学位论文攻读学位期间发表的学术论文l-宋茂强潘晶晶等网络监控系统中代理服务器的设计与实现计算机应用研究2010年11月增刊稿件编号09080593,k-,‘。●:t● 北京邮电大学硕士学位论文参考文献[1]刘润安浅谈网络视频监控的现状及发展应用应用科技应用科技[2]魏笑笑网络视频监控的关键技术及业务发展策略研究科学技术与工程9卷(17期)2009年9月[3]孙学代视频监控系统的发展及应用江西通信科技[4]罗尧,贺武林,汪厚祥多级网络视频监控系统的设计与实现计算机与数字工程37卷(01期)2009年[5]李立仁李少军刘忠领智能视频监控技术综述中国安防2009年10月[6]MinoruEtoh,TakeshiYoshimuraWirelessvideoapplicationsin3GandbeyondIEEEWirelessCommunications,2005,12(4):66—72[7]雷正雄,朱晓民,廖建新流媒体在WCDMA网中的应用研究计算机应用研究2006年第7期[8]LEONIDASKoNToTHANASSIS,RAMESHSITARAMAN,JOELWEINATransportLayerforLiveStreaminginaContentDeliveryNetworkPROCEEDINGSOFTHEIEEE,VOL.92,NO.9,SEPTEMBER2004P1408—1419[9]赵臣兵,刘立柱基于RTP协议的视频实时采集与传输的研究微计算机信息第22卷(第6-1期)2006年P124-126[10]李太君,吴泽晖流媒体传输协议及其应用开发计算机工程与应用2004年3月P138-141[11]RFC2326RealTimeStreamingProtocol[12]RFCl889ATransportProtocolforReal—TimeApplications[13]RFC3550Real—timeTransportControlProtocol[14]RFC2327SessionDescriptionProtocol[15]王荣生SDP协议在视频点播系统中的应用计算机应用与软件第22卷第1期2005年1月P74—76[16]王志刚,周南,高庆DarwinStreamingserver的研究与应用电脑知识与技术第14卷第8期2008年12月P2118—2119[17]QuicktimeStreamingServerModulesProgrammingGuide63 北京邮电大学硕士学位论文b主主巳;ZZ鱼金!金!Q巳金!:垦巳卫!曼.com/documentation/QuickTime/QTSS/QTSS.pdf;o节L≮;各我癣

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭