基于android平台的手机视频监控客户端的设计

基于android平台的手机视频监控客户端的设计

ID:12059791

大小:5.78 MB

页数:56页

时间:2018-07-15

上传者:U-3868
基于android平台的手机视频监控客户端的设计_第1页
基于android平台的手机视频监控客户端的设计_第2页
基于android平台的手机视频监控客户端的设计_第3页
基于android平台的手机视频监控客户端的设计_第4页
基于android平台的手机视频监控客户端的设计_第5页
资源描述:

《基于android平台的手机视频监控客户端的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

本科毕业设计(论文)题目基于Android平台的手机视频监控客户端的设计学生姓名:专业:通信工程指导教师:完成日期:201年5月31日 诚信承诺书本人承诺:所呈交的论文是本人在导师指导下进行的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已发表或撰写过的研究成果。参与同一工作的其他同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。签名:日期:本论文使用授权说明本人完全了解南通大学有关保留、使用学位论文的规定,即:学校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容。(保密的论文在解密后应遵守此规定)学生签名:指导教师签名:日期: 摘要视频监控作为一种防范能力和控制能力较强的综合监控方式,是安全保障的重要组成部分,以其直观、方便和信息内容丰富而广泛应用于交通、民用安全等各个领域,特别是重要安全部门或重大事件中。随着计算机、网络、图像处理以及传输技术的飞速发展,尤其是伴随移动通信的快速发展,视频监控从有线网络监控发展到移动视频监控。移动视频监控的终端技术发展迅速,硬件性能有了突破性提高。具有高性能的3G智能手机是移动视频实时监控终端设备最理想的选择。Google开发的Android平台极大的推动了智能手机的发展,平台所提供的良好开放性能,为普及智能手机视频监控系统带来了契机。本文研究了移动视频监控的关键技术,如移动智能终端,流媒体技术和视频压缩技术,Android操作系统等。采用主流AndroidOS作为移动智能终端操作系统平台,首先简要介绍系统各模块功能,然后提出客户端设计方案,使用RTP,RTSP流媒体技术和具有高压缩率的H.264视频压缩技术开发客户端软件,采用Java语言编写相关程序。关键词:视频实时监控,移动Android客户端,H.264,流媒体技术II ABSTRACTVideosurveillancetechnology,asacomprehensiveway,havingastrongerabilityinpreventionandcontrol,isplayinganimportantroleinsecurity.Itiswidelyusedinurbantransport,civilsecurityandotherfieldswithitsintuitive,convenientandabundantinformation,particularlyinthesectorwhosesecurityisimportantandinthefieldwithsignificantevent.Withtherapiddevelopmentofcomputer,network,imageprocessingandtransmissiontechnology,especiallywiththerapiddevelopmentofmobilecommunications,videosurveillancedevelopsfromthewirednetworktomobilevideosurveillance.Theterminaltechnologyofmobilevideosurveillanceisdevelopingrapidly,andthehardwareperformancehasbeenabreakthrough.Smartphonewiththecharacteristicsofhighperformanceandsupportof3Gnetworkisthebestchoiceformobilevideoreal-timesurveillanceterminalequipment.AndroidplatformthatGoogledevelopedgreatlypromotesthedevelopmentofsmartphones,andtheopeningsourceofAndroidplatformprovidesagoodchanceforvideosurveillancesystem.Themaintopicofthepaperfocusesonthekeytechnologiesofmobilevideosurveillancesuchasmobileintelligentterminal,streamingmediatechnology,videocompressiontechnology,AndroidOSandsoon.ThepaperusesthepopularAndroidOSasamobileterminaloperatingsystemplatform,RTP,RTSPstreamingmediatechnologyandH.264videocompressiontechnologywhichhasahighcompressionratetodevelopclientsoftware,usingJavatowriterelatedprograms.Keywords:VideoReal-timeMonitoring,Surveillance,Android,H.264,StreamingMediaTechnologyII 目录摘要IABSTRACTII目录III第一章绪论11.1课题的来源及意义11.2国内外的发展情况11.3论文的章节安排2第二章移动视频监控相关技术32.1Android平台32.1.1Android平台简介32.1.2Android应用程序组件32.2移动流媒体技术42.2.1流媒体传输和控制协议52.2.2流媒体传输基本原理72.2.3视频压缩编码技术72.3移动终端流媒体播放器82.4Java开发基础92.4.1Java环境变量的配置92.4.2Android平台的搭建92.5本章小结11第三章系统功能介绍123.1系统功能概述123.2技术路线133.3客户端功能143.4服务器端功能143.5其他对象163.5.1前段视频采集设备163.5.2其他外围设备17IV 3.6本章小结17第四章技术方案研究与选择184.1视频监控系统的体系结构和基本原理184.2移动视频实时监控的挑战194.2.1视频传输足够的带宽194.2.2较低的误码率194.3技术难点204.3.1网格类型差别对视频监控影响对比204.3.2移动流媒体传输协议选择214.4本章小结23第五章客户端设计245.1系统总体设计245.1.1系统总体设计结构245.1.2业务流程245.2客户端UI设计275.2.1典型业务流程描述275.2.2客户端实现295.3数据库设计305.4相关接口和标准305.5本章小结31第六章总结与展望326.1设计与总结326.2设计与改进326.3设计与展望32结束语33参考文献34致谢35附录36IV 第一章绪论1.1课题的来源及意义随着人们物质生活水平的提高,人们对于家居财产、幼儿园情况、家庭老人、交通拥挤情况进行监控的需求日益迫切。视频监控作为一种防范能力和控制能力较强的综合监控方式,是安全保障的重要组成部分,拥有直观、准确、及时和信息丰富等优点,能够广泛应用于各种场合。眼下生活节奏越来越快,人们随时随地查看关注点现场情况的需求不能得到满足。因此移动视频监控就应需而生,这也是本文研究的主要问题。历史上对于视频监控的研究由来已久,与其相关的技术也日臻成熟。同时,我国网络带宽的大幅增大以及智能终端性能的不断提高,使得实现移动视频实时监控成为可能,本文给出了一种基于Android平台的手机视频实时监控技术的解决方案。本课题来源于华工信元通信技术有限公司与中国电信合作的商业项目,目前应用于“天翼看交通”和“IU宝贝眼”这两个子项目,分别在城市交通和家庭监控等领域表现突出。本文的重点不涉及具体的业务,着重介绍移动视频监控系统以及手机客户端的设计,使之成为能够应用于更多的场合,方便人们的生活,为各行各业提高管理效率、降低成本甚至为企业带来创收的有效手段。1.2国内外的发展情况目前国外视频监控业务主要应用在公共领域、行业用户和个人用户这三个方面。在公共场所,国外设置了众多监控设备,以加强对公共领域安全的控制能力。在交通、银行、大型连锁超市、居民住宅等领域都已经得到了广泛应用。在美、英等国,个人使用视频监控主要是应用于住宅的安全防范和财产的监控。著名市场分析公司Frost&Sullivan预测,从2000年起全球网络摄像终端的市场将从2000年的4200万美元高速增长到2005年的4.21亿美元,年增长速度达到58.6%。我们相信,中国电信级视频监控市场的发展将直接影响到全球网络摄像终端市场的规模和增长速度,从2006年开始,全球网络摄像终端的市场年增长速度将达到70%。到2008年,全球网络摄像终端市场规模将达到20.68亿美元。从国外的视频监控市场可以看出个人用户同样是视频监控的重要客户,而我国的视频监控业务主要还集中在行业用户,在个人用户方面有很大的潜在市场。随着3G网络的不断铺开,日本和韩国以及欧美地区的一些移动运营商已经推出了一定数量的基于移动流媒体技术的视频业务,移动流媒体业务已成为3G网络的核心业务和热点业务。国内由于3G网络尚处于实验和试运营阶段,应用在3G50 网络上的移动流媒体业务尚处在起步阶段。由于网络带宽和手机终端等限制,在2.5G网络上实现的移动流媒体业务种类十分有限,能够达到的图像、语音效果也很难尽如人意。而即将大规模商用的3G网络毫无疑问为移动视频监控的发展提供了有效的支撑。由于3G网络拥有很高的数据传输速率和数据业务支撑能力,3G运营商不仅可以向用户提供高质量的语音业务,而且还能够提供高速率的流媒体业务。不仅如此,作为从3G向4G演进的主流技术,LTE改进并增强了3G的空中接入技术,对于用户的承载能力要比3G更好,其在20MHz频谱带宽能够提供下行100Mbps、上行50Mbps的峰值速率,约为传统3G技术的20多倍。同时,LTE能够让电信运营商为350Km/h的高速移动用户提供大于100kbps带宽的接入服务,支持成对或非成对频谱,并可灵活配置1.25MHz到20MHz多种带宽,还能为电信运营商节省投资成本,这些无疑使LTE成为当前电信运营商和设备制造商关注的热点。网络带宽的高速发展无疑大力推动了视频监控业务的发展。移动视频监控业务结合视频监控业务和移动网络二者的优点,能为用户带来全新的业务体验,将为运营商开辟新的移动增值业务市场。电信“全球眼”、新联通“神眼”、中移动“移动全球眼”的业务推广,使得网络视频已不仅限于“监控”,它已成为各行各业提高管理效率、降低成本甚至为企业带来创收的有效手段,必将深远影响视频监控的应用模式,从而给行业带来更大的机会,由于全IP化的解决方案,系统运用更加灵活,与各行各业的行业管理手段结合得更紧密,系统的创新运用会有巨大的发展前景。简单归纳,视频监控发展趋势和特征是系统一体化、集成化、智能化、网络化、民用化。1.3论文的章节安排第一章阐述课题的引入,国内外视频监控的现状和论文的章节安排;第二章分析移动视频实时监控系统的相关关键技术以及客户端软件开发环境的搭建;第三章简要介绍移动视频监控系统各模块功能,使读者对整个系统的实现有所了解;第四章确定并选择技术方案,为客户端设计提供技术支持;第五章设计客户端用户界面以及展示客户端的功能;第六章展望总结,阐述本文的创新点与不足。50 第二章移动视频监控相关技术2.1Android平台2.1.1Android平台简介本系统主要实现基于Android手机的移动视频监控功能。Android技术在本系统中占有重要地位。Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方)。Android操作系统最初由AndyRubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的BlackberryOS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。Android是以Linux为核心的手机操作平台,作为一款开放式操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qtforandroid)、Mono(monoforandroid)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的AndroidSimple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript、ajax、HTML5、jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。而在Android系统底层方面,Android使用C/C++作为开发语言。基于Android的各种优点,目前移动终端选用基于Android系统的移动手持设备。2.1.2Android应用程序组件一些独立的组件通过名为manifest的工程捆绑在一起,相互协调构成一个Android50 应用程序。在manifest中,有一个mainfest.xml配置文件,这个配置文件描述了每一个组件以及组件的作用。下面介绍六个基本组件,它们是构成Android应用程序的基石。(1)Activity。Activity是Android最基本的应用程序组件。任何一个Android应用程序都可以看作一组任务,这里每一个任务就可以称作一个Activity。比如短消息是一个应用程序,里面的新建短信界面、新建彩信界面、删除短信界面等就是Activity。由此可见,在应用程序中,一个Activity通常就是一个单独的屏幕,用于呈现数据和与用户进行交互。(2)Service。应用程序中的“幕后工作者”,相当于没有界面的Activity,因此Service组件运行时不可见,常用来执行一些需要持续运行的处理。以读者熟悉的音乐播放器为例,在一个音乐播放器程序中有多个Activity,比如歌曲的选择、播放等。如果用户想导航到其它屏幕(比如短消息),要保持之前选择的音乐继续播放,音乐播放器程序就必须启动一个Service,在后台保持音乐的不断播放。这是因为音乐播放器里没有“后台播放”这个Activity。(3)ContentProvider。Android应用程序使用文件、SQL数据库等存储系统来保存数据,而使用ContentProvider来实现不同应用之间的数据共享。每个应用程序的ContentProvider提供了一套标准的访问接口,以便各应用程序之间对数据进行读取、保存等操作。(4)Intent。当某个或某些组件要执行某操作时,Intent就是此操作的抽象描述,主要描述操作和操作对应的数据,此外,还描述一些附加属性,比如目标组件的名称、数据类型等。通俗的说,Intent就是告诉系统“某人将要怎样做某事”。系统收到此描述后,负责找到对应的目标来执行适当的行为。(5)BroadcastReceiver。在Android中,应用程序会通过BroadcastReceiver组件来监听符合条件的Intent。每一个BroadcastReceiver都可以接收一种或若干种Intent作为触发事件,当BroadcastReceiver被触发后,会自动启动相应程序对收到的Intent做出响应。(6)Notification。在不中断当前Activity的情况下,Notification用来提示用户。例如,当设备收到来电或短消息时,它通过闪光,发声,显示图标等来提醒用户。Notification是Service或BroadcastReceiver获得用户注意的首选方式。需要注意的是,并不是每个Android应用程序都必须由以上六种组件构成,有时采用其中几种就可组合成应用程序。但是,描述组件及组件功能的manifest.xml配置文件是必需的[1]。2.2移动流媒体技术50 移动流媒体技术就是把连续的声音影像信息经过压缩处理后传送到网络服务器上,让终端用户能够在下载的同时观看收听,而不需要等到全部的多媒体文件下载完成就可以即时观看的技术。移动流媒体技术的出现伴随着移动通讯技术的发展和网络音视频技术的进步,其主要是关于流媒体数据从采集到播放整个过程中所需要的核心技术。移动流媒体数据流具有三个特点:连续性、实时性、时序性,所以流媒体数据具有严格的前后时序关系。流媒体传输技术是在FTP/TCP的基础上发展而来的。服务器按照一定的顺序将文件分割成若干个数据分段,然后封装到分组中依次进行传输,客户端接收到分组后重新将其组装起来,最终形成一个与原来一样的完整文件。流媒体播放技术有优点同样也有缺点。优点是能够及时传送随时播放,虽然在开始阶段需要一定的时间进行缓冲,但依然能够在实时性要求高的领域具有无可比拟的优势;缺点是由于网络的速率不稳定性,当播放速率大于传输速率时,视频播放将出现停滞,时断时续的现象[2]。当您在线收听或收看网络上的音视频节目时,您就正在使用流媒体。流媒体技术的出现是为了解决普通音视频文件的巨大数据量与有限的网络传输带宽之间的矛盾而产生的。与常规的多媒体文件不同,流媒体的播放并不要求下载完整的文件,而仅需要将开始部分缓存,然后就可以实现数据流的随时传送随时播放。为了达到这个目的,流媒体服务器需要将动画、视音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。用户只需经过几秒或十几秒的启动延时即可在自己的计算机上利用解压设备(硬件或软件)对压缩的多媒体数据进行解压后回放。当音视频等媒体数据在客户终端播放时,数据的剩余部分将在后台从服务器继续下载。与单纯的下载方式相比,由于用户不用等所有内容都下载到硬盘后才开始浏览,因而流媒体文件的启动延时将大幅度地缩短,同时对客户端的存储需求也大为减少。为了保证媒体文件的实时性,流式传输使用特定的实时流传输协议RTSP。流媒体技术在远程教育、远程医疗、视频点播、电子商务等领域都有着广泛的应用前景,蕴含着巨大的商机,因而吸引了众多企业参与竞争。2.2.1流媒体传输和控制协议流媒体传输和控制协议在应用层主要涉及到HTTP、RTSP、RTP和RTCP协议,在传输层有TCP和UDP协议。HTTP协议是建立在传输控制协议(TCP)之上的超文本传输协议。TCP/IP协议是专门为数据传输而设计的,能够保证传输的可靠性。流媒体的特征要求必须确保数据的实时性和同步性。国际电信联盟(ITU)设计了实时传输协议(RTP50 )来解决数据传输的实时性和同步性问题。目前,流媒体解决方案主要采用RTP/UDP传输音视频数据和HTTP/IP传输控制信息。RTP是在一对一或一对多的情况下针对流媒体数据流工作,不仅能够提供时间信息而且可以保证数据流的同步。通常RTP建立在UDP之上,使用UDP传送数据。UDP是面向无连接的传输层协议,提供不可靠的数据服务。该协议不保证数据的可靠性,不进行丢包重传,延时较短,处理速度较快。因此它能提供开销小、速度快的端到端通信服务,在音频数据传输还是那个应用较多[3]。RTP协议实现数据流和控制流的分离,数据报文和控制报文使用相邻的不同端口。RTP本身没有可靠的传送机制,其流量控制和拥塞控制是由实施传输控制协议(RTCP)来提供。流媒体传输和控制协议在OSI模型中的位置如图2.1所示。应用层HTTPRTSPRTPRTCP传输层TCPUDP网络层IP数据链路层网络相关协议物理层无线传输介质图2.1相关协议在OSI模型中的位置RTCP是一个控制协议,负责管理数据传输质量,提供当前应用进程的控制信息和可靠的传输机制。RTP和RTCP共同协作才能完成流媒体的传输和控制。实时流协议(RTSP)是应用层协议,定义了一对多应用程序如何有效地通过IP网络传送多媒体数据[4]。位于RTP和RTCP协议层之上,通过IP网络传输多媒体数据,在传送机制上采用TCP和RTP完成数据传输。RTSP用于控制实时数据的发送,提供用于音视频的VCR远程控制功能和用于控制流媒体的播放、暂停和记录等工作。会话描述协议SDP(SessionDescriptionProtocol),SDP是用来描述RTSP,以便说明一个流媒体会话的基本属性,如流媒体的类型、格式、传输带宽,播放时间,缓存容量大小等。通常包含会话信息,媒体信息等[5]。结合移动视频监控对通信实现的特点,本文采用RTP、RTSP、RTCP和HTTP协议完成视频监控系统的通信和远程控制。50 2.2.2流媒体传输基本原理本节简要介绍媒体的传输方式。包括顺序流式传输(ProgressiveStreaming)和实时流式传输(Real-TimeStreaming)。(1)顺序流式传输顺序流式传输就是按照顺序下载。用顺序流式传输方法基于标准的HTTP或FTP服务器来传输文件,通常容易管理,方便用户的使用,通常不需要特殊的协议。整个下载过程是无损的,能保证视频的高质量,但是由于网络传输速率的问题,一般需要等待较久的时间。顺序流式传输常用于对视频质量要求较高的场合,而对于实时性,随机访问性要求较高的场合则不适用。(2)实时流式传输实时流式传输能够保证信号带宽与网络连接的匹配,实现实时传送,适合现场直播,支持随机访问,用户可进行快进后退操作。实时流式传输需要传输网络协议和专用流媒体服务器。相关的流媒体服务器如QuickTimeStreamingServer,WindowsMediaServer等,传输网络协议有RTSP等。由于这些协议与防火墙有关,在使用时需经过配置。系统设置,管理顺序流式传输复杂。由于必须匹配链接带宽,在低速链接设备时或者网络拥塞时,会出现丢帧现象,视频质量下降。2.2.3视频压缩编码技术数字视频编码标准主要由两个标准化组织制定。一个是由国际标准化组织(ISO)和国际电工委员会(IEC)组件的活动图像专家组(MPEG);另一个是国际电信联盟电信标准局(ITU-T)的视频编码专家组(VCEG)。MPEG制定的视频编码标准有MPEG-1、MPEG-2、MPEG-4。ITU-T制定的视频编码标准有H.261和H.263。为了促进下一代多媒体通信的应用,MPEG和VCEG共同成立了联合视频工作组(JVT),共同开发了视频编码标准H.264。目前H.264是最先进的视频编码标准。(1)MPEG-4标准50 MPEG-4是基于第二代压缩编码技术制定的视频编码标准,以视听媒体对象为基本单元,采用了基本对象,基于内容的压缩编码,以实现数字音视频,图像合成应用及交互式多媒体的集成。MPEG-4主要用户IP网络视频会议,交互式视频通信和便携式视频通信终端等。由于第二代压缩编码技术涉及的学科非常广泛,而相关学科的很多核心技术并未取得突破性进展,MPEG-4的编码实现方案依旧采用16*16像素为基础的混合编码,算法基础仍是运动补偿测试,DCT和熵编码。(2)H.264标准H.264视频编码标准是目前最新的技术,虽然H.264遵循了原来压缩标准的架构,但是H.264具有一些新的特性,如可变块大小运动补偿,帧内预测编码,多参考帧技术等,所以在性能上有了不小的提升。H.264标准分两层结构,包含网络抽象层(NAL)和视频编码层(VCL)。网络抽象层用户数据打包和传输,编码层负责视频压缩编码,这种分层结构,实现了传输和编码的分离。由于H.264标准引入了数据分割等抗误码技术,实现了在复杂环境下的使用,可以适应不同网络的传输要求。由于采用高度复杂的实现算法,H.264是目前低码率下压缩率最高的编码标准,在带宽不稳定的无线网络上有着无法比拟的优点。相对于MPEG-4和H.263的性能,H.264具有明显的优越性。在同等的图像质量条件下,H.264的数据压缩比能比当前的DVD系统中使用的MPEG-2高2-3倍,比MPEG-4高1.5-2倍。正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。在MPEG-2需要6Mbps的传输速率匹配时,H.264只需要1-2Mbps的传输速率。H.264的PSNR比MPEG-4和H.263明显要好,在6种速率的对比测试中,H.264的峰值信噪比(PeakSignaltoNoiseRatio,PSNR)比MPEG-4平均要高2dB,比H.263平均要高3dB。随着硬件系统的发展和突破,高复杂度带来的资源消耗已不是问题,其高度压缩性能,网络适应性强的特点非常适合在无线通信中传输,在远程监控系统中选用的压缩技术不能单纯的考虑实现的简便需要综合考虑许多因素:例如,输出的质量、处理过程中的复杂程度及信息处理时延、是否能够满足实时性的要求等等。为了更好的满足客户端对输出质量等各项目标的要求,需要采用运算能力有限目标输出质量要求较高的技术[6],所以本文将采用H.264编码器作为服务器端编码器和视频监控客户端解码器。2.3移动终端流媒体播放器50 在移动视频实时监控中,用户通过手机等移动终端来观看和控制监控视频,为了实现该功能,终端需具备两大部分的功能。一部分功能是对视频流的播放功能,这部分采用开源的FFmpeg。FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。终端的播放器与网络摄像终端之间采用RTSP/RTP/RTCP协议进行信息交互。另一部分功能是对摄像头/云台的操控能,这部分功能需要在移动终端上编写客户端软件来实现,终端利用客户端软件将用户的控制命令通过控制协议发送给网络摄像终端,对摄像头/云台进行控制。软件可以直接运行在Android平台的终端上。2.4Java开发基础2.4.1Java环境变量的配置1.安装JDK下载jdk-6u24-windows-i586.exe然后双击安装,为了便于今后设置环境变量将默认的安装路径C:ProgramFilesJavajdk1.6.0_24修改为E:jdk1.6。2.配置JDK安装完成以后,在桌面右键点击“我的电脑”,选择“属性”在"系统变量"下进行如下配置:1)新建->变量名:JAVA_HOME变量值:D:Javajdk1.6.0_12(这只是我的JDK安装路径)。2)编辑->变量名:Path在变量值的最前面加上下面的值:%JAVA_HOME%bin;%JAVA_HOME%jrebin。3)新建->变量名:CLASSPATH变量值:.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar。4)编辑->变量名:JAVA_HOME,变量值:D:Javajdk1.6.0_10注意:当设置的变量在末尾时,不要加上“;”。2.4.2Android平台的搭建1.安装AndroidSDK,下载android-sdk-windows_3.3.1-all.rar然后直接解压到以上目录下2.点击"我的电脑"->"属性"->"系统属性"->"高级"->"环境变量"(这步跟配置JDK环境类似)->"系统变量"然后点击下方的"新建",然后在对话框中的"变量名"中输入SDK_HOME,在"变量值"中舒服刚才目录。也就是D:sdxjobInstallandroid这个目录。50 3.找到path变量,然后点"编辑"。在变量最前端加"%SDK_HOME%tools;"记得分号一定要加上,相当于一个完结符号。这个路径也就是D:sdxjobInstallandroidtools。4.选择[开始]|[运行]命令,在[运行]中输入cmd并按回车键,然后在窗口输入android–h,没有显示android–h为外部命令,表示配置成功。反之,下载eclipse-SDK-3.5.2-win32.zip,解压到D:android下,再下载ADT10.0。然后运行eclipse,接着离线安装ADT10.0,选择help-----installnewsoftware。选择add然后出现一下对话框路径选择好了以后接下来安装,选择下一步安装即可创建子目录d:androidworkspace,用于保存Eclipse的工程。在第一次启动Eclipse时,将此目录设置为workspace的默认目录。5.配置ADT插件:启动Eclipse,点菜单Windows-->Preferences-->Android,在SDKLocation中添加上一步的AndroidSDK的存储路径d:androidandroid-sdk-windows,现在Eclipse工具栏中多了一些东西,是我们安装插件的效果。点击模拟器(向下箭头的按钮)的按钮,出现配置界面,今后的软件更新也可以在此处进行:选择VirtualDevices-->New就可以新建一个新的Android模拟器,因为手机版本不同,版本提供的服务也不同,所以要建立多个模拟器来测试。然后CreateAVD就可以了。随后选中模拟器的版本,点击Start就会出现模拟出来的手机界面了。Android平台搭建完成后的模拟手机界面如图2.2所示。图2.2移动视频实时监控系统结构50 2.5本章小结本章简要介绍了Android平台、移动流媒体技术、视频压缩编码技术和Java开发基础等移动视频监控关键技术。对比分析了各种智能手机操作系统,选择Android操作系统作为开发平台。介绍了移动流媒体传输和控制协议,以及实时传输的基本原理,选择了RTP、RTCP、RTSP、HTTP协议作为通信协议来完成程序设计。对比分析了MPEFG-4和H.264视频编码标准,结合移动视频监控系统的要求,选择H.264作为视频编解码标准。简述了视频监控系统各个部分关键的技术点。50 第三章系统功能介绍本章将主要论述移动视频实时监控系统包含哪些功能。首先,我们整体概述该系统可以满足用户哪些需求,具有哪些特点;接着,简述该系统的一些重要功能;最后,分点介绍此系统涉及到的对象,让读者对系统有整体的了解。这里介绍基于IPCamera、终端(手机移动终端,PC客户端和web客户端)和服务器控制程序实现移动视频实时监控的一种可行的技术实现方案。3.1系统功能概述图3.1移动视频实时监控系统结构图3.1中所示的移动视频实时监控系统可以分为客户端(移动终端、PC终端、PC浏览器)、视频监控平台、前端视频采集设备(网络摄像终端)以及其他外围辅助设备等四部分。前端视频采集设备是需要部署在各监控点的设备,其他外围辅助设备是显示移动实时视频监控功能所需要借助的设备。移动视频监控是指用户通过移动终端接入移动视频监控系统,对所关注的场所、区域进行实时视频流监控的行为。通过移动视频监控,用户可以根据自己的需要,随时随地地通过移动终端接入业务系统,选择要查看的监控对象,进行视频观看,还可以通过终端控制前端监控设备从多视角查看所监控对象。移动视频监控具有如下特点:(1)不受时间和地点的约束,可以随时随地查看所监控的内容;(2)可以实时获取所需的视频信息,如实时交通信息、幼儿园小孩探视、家庭监看等;(3)可以与手机短信、彩信等结合起来,拓展业务功能,用户使用起来更加方便。50 3.2技术路线一个最基本的流媒体系统包括编码器,流媒体服务器和客户端播放器三个部分,如图4.1所示。各个模块之间的数据通信交换都是按照特定的协议。编码器用来将原始的音视频转换成合适的流媒体格式文件,服务器用来接收和转发编码后的媒体流,客户端则是负责解码和播放接收到的流媒体数据。流媒体系统的一般结构如图3.2所示。图3.2流媒体系统的一般结构各个部分之间使用特定的协议进行有效的沟通,下面以实时流式传输为例简要说明流媒体传输的基本原理,如图3.3所示。Web服务器流媒体服务器客户端程序HTTP/TCPRTP/UDPHTTP/TCPCheckin图3.3流媒体传输过程1.客户端使用HTTP从Web服务器检索到的相关数据对客户端程序进行初始化;2.当某个流媒体服务被用户选择后,客户端和服务器之间使用HTTP/TCP交换控制信息,从流媒体服务器中检索出音视频信息;3.Web服务器从流媒体服务器取出音视频;4.客户端程序与流媒体服务器之间使用RTSP来交换传输音视频数据的控制信息。RTSP实现对流媒体服务器的远程控制,如暂停、快进、回放等;5.客户端程序通过RTP/UDP协议从流媒体服务器接收到视频流,此时,客户端使用播放程序即可播放视频流。50 以上5个流程简要叙述了实时传输的整个过程。3.3客户端功能客户端业务信息相关流媒体播放器监控终端软件图3.4客户端模块结构对于移动客户端,用户需要即时查看当前布防点的状况,当布防点出现异动时及时收到相关的提醒。具体功能点如下:Ø视频实时监控前端设备对视频信号进行实时采集、编码和传输,用户通过Android客户端实时观看监控内容。Ø录像存储和回放用户可以设定监控任务,平台根据用户设定的条件控制前端设备对监控点进行录像,可以全天候开机录像、定时录像和异常情况下录像,并将录像保存到业务平台上。录像完毕后,平台还可通过短信、彩信等方式通知用户。用户可以选择观看录像,在观看过程中可以进行暂停、快进、快退和快速定位等操作。Ø远程遥控用户通过Android客户端观看实时监控视频时,可以远程控制前端设备,包括调整摄像头/云台的上、下、左、右旋转,控制摄像头光圈大小变化、焦距调节等。Ø报警功能用户可以设置监控点的报警触发条件、报警方式等。在到达报警点后,平台将报警信息通过手机短信、彩信的方式通知用户,并且会对监控点进行录像。3.4服务器端功能视频监控平台可以分为业务管理模块,DDNS管理模块,视频监控服务器模块、流媒体服务器模块四大模块,服务器端功能结构如图3.5所示。50 基于流媒体技术的视频监控平台业务管理模块视频监控服务器模块DDNS管理模块流媒体服务器模块图3.5服务器端功能结构Ø视频监控服务器模块视频监控平台接收到终端用户的身份验证后,会将网络摄像终端所在的网络节点信息等发送给终端用户,用户通过手机上的流媒体播放器即可实时观看监控现场。视频的流式分发遵循3GPPPSS(PSS,Packet-switchedStreamingService)标准,视频流的传输采用RTSP/RTP/RTCP协议(Real-timeStreamingProtocol/Real-timeTransportProtocol/RTPControlProtocol)。用户保存的视频或终端报警录制的视频等数据都会存储到流媒体服务器上。为了让用户能够通过移动终端操控网络摄像终端,视频监控系统提供两种控制终端的方式,一种是移动终端直接了用网络摄像终端提供的接口,做到实时控制,另外一种是在视频监控平台中增加视频监控服务器模块,该模块负责将操控指令发送给网络摄像终端,提供第二种方法可以避免用户在移动终端出现问题的时候,依然可以通过PC控制并查看网络摄像终端的监控点。ØDDNS管理模块DDNS(DynamicDomainNameServer)是动态域名服务的缩写。DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流。目前互联网服务提供商ISP(InternetServiceProvider)为广大用户提供动态IP(如ADSL拨号上网),而很多网络视频服务器和网络摄像终端通过远程访问时需要一个固定的IP,而固定IP的费用很难让客户接受。所以DDNS为此提供了一种全新的解决方案,它可以捕获用户每次变化的IP,然后将其与域名对应。这样终端就可以通过域名并透过网域来进行远程监控了。Ø流媒体服务器模块流媒体服务器模块的主要功能是响应客户端的请求,把媒体数据传送给客户。流媒体服务器在流媒体传送期间必须与客户的播放器保持双向通信(这种通信是必须的,因为客户可能随时暂停或快放一个文件)。服务器在响应广播的同时能够及时处理新接收的实时广播数据,并将其编码。另外,可以提供其他额外功能,如:数字权限管理(DRM),插播广告,分割或镜像其他服务器的流,还有组播[7]。50 流媒体服务器模块的服务方式有三种:单播,在客户端与媒体服务器之间建立一个单独的数据通道,从1台服务器送出的每个数据包只能传送给1个客户机。组播,在以组播技术构建的网络上,允许路由一次将数据包复制到多个通道上。点播于广播,点播连接是客户端与服务器之间的主动的连接,在点播连接中,用户通过选择内容项目来初始化客户端连接,用户可以开始、停止、后退、快进或暂停流。广播指的是用户被动地接收流,在广播过程中,数据包的单独一个拷贝将发送给网络上的所有用户客户端接收流,但不能控制流。我们的流媒体服务器模块则属于广播的服务方式。Ø业务管理模块业务管理模块包括用户管理、监控设备管理、监控点管理等以及完成视频监控业务相关的各种操作。Web终端可以对用户进行视频监控鉴权,对于未开通监控的用户,会得到一些如何办理的提示;对于已经开通视频监控的用户,可以通过web浏览器查看监控点的实时信息。Ø信息安全控制对于安全性、隐私性要求较高的业务(如家庭监控等),可以提供相应的安全措施,只有授权用户才能实施监控,观看相关的视频监控内容。3.5其他对象其他外围网元SMS系统支撑系统图3.6其他网络对象结构其他网络对象如图3.6所示。3.5.1前段视频采集设备前端视频采集设备其实是一个网络摄像终端,其主要包括摄像头、云台、报警器和编码器。50 监控现场的视频流通过前端摄像头采集到后,需经过编码器编码变成流媒体的视频流,然后将编码后的视频流直接发送给终端(移动终端、PC终端、PC浏览器);当监控源出现紧急报警情况时,报警器会通过编码器向视频监控平台的视频监控服务模块发送,平台以短信或者拨打电话的方式通知预设用户。3.5.2其他外围设备其他的外围系统包括短信业务(SMS:ShortMessageService)系统和支撑系统。这些系统与监控平台直接通过接口相互调用,实现业务系统所需要的功能;当网络摄像终端出现报警信号时,平台需要借助SMS系统,将报警信息通过短信的方式发送到用户终端上;3.6本章小结本章主要从Android客户端、服务器端、PcWeb客户端和其他网元对象四个方面介绍了移动视频实时监控系统的业务需求和整体情况,让读者对系统各部分功能有所了解,同时为后面章节客户端的设计与实现提供了需求依据。50 第四章技术方案研究与选择4.1视频监控系统的体系结构和基本原理本文提出的手机视频监控系统分别由以下5部分组成,系统的结构如图4.1所示。AlertServerNetCamera注册NetCamera的PhoneID,IP地址和TCP端口号Port返回NetCamera的IP和TCP端口号SmartPhone提供PhoneID返回查询结果根据ID查询数据库控制服务器记录NetCamera的相关信息到数据库DBServer图4.1系统总体结构图(1)客户端(SmartPhone):采用智能手机作为客户终端,该手机支持多媒体音视频业务。(2)网络摄像机(NetCamera):对视频的采集使用H.264压缩技术,并通过GPRS/CDMA网络将实时的视频数据传输到客户端。系统可采集的视频图像格式有VGA,QVGA,CIF和QCIF等。(3)控制服务器(ControlServer):设置网络摄像机的IP地址、网关、TCP端口、UDP端口号、注册服务器的IP地址、UDP端口号、图像分辨率和压缩格式等参数。(4)注册服务器(AlertServer):负责对网络摄像机的配置参数进行注册记录。(5)数据库服务器(DataBaseServer):负责存储网络摄像机的相关设置,如IPPhoneID,TCP/UDP端口号。当网络摄像机登陆到Internet之后,将通过UDP传输协议在注册服务器上注册本摄像机的PhoneID和IP地址等相关的重要信息。注册服务器将相关信息记录到一个数据库服务器中。注册完毕之后,手机用户就可以通过每个网络摄像机公开的并且是唯一的PhoneID号来对摄像机进行远程访问。用户在手机客户端输入要访问摄像机的PhoneID号,这个号码信息将会通过无线网络(GPRS/CDMA)发送至注册服务器,当服务器收到之后,会根据PhoneID号来查询当前的数据库服务器,50 从中搜索出与此号码相对应的摄像机的相关信息(IP、TCPport、UDPport等),服务器得到查询结果之后,将利用无线网络将查询信息发送回手机客户端。至此,手机客户端就可以利用当前查询返回的信息来对网络摄像机进行访问。整个查询的过程对用户来说是透明不可见的,用户了解的是通过PhoneID就可以连接上对应的网络摄像机。这种注册和查询方案,使得手机用户不必了解网络摄像机每次接入网络的IP地址和其他相关信息,因为每次网络摄像机连接到Internet上时可能获得不同的动态IP地址(例如ADSL线路),所以相关的信息在每次接入网络后都会有所不同。整个注册和查询的过程也就是完成了一个网络摄像机PhoneID号码的解析过程。当得到摄像机的IP地址、TCP端口号等信息之后,手机用户便可以通过无线网络(GPRS/CDMA)对网络摄像机发起连接。手机通过TCP传输协议连接到网络摄像机所在的Internet网络或无线网络,从而达到手机用户远程访问摄像机的目的[8]。4.2移动视频实时监控的挑战4.2.1视频传输足够的带宽无线网络的频谱和功率资源严格受限,所能够达到的带宽远低于有线网络。因此,高效地利用无线资源、减少开销、提高系统容量,是无线多媒体网络面临的主要问题之一。当利用公众服务的移动网络实现视频监控业务时,其单个终端的有效带宽相当有限,而且由于移动运营商一般是利用同一个网络承载语音、数据业务,高带宽的监控数据极易发生丢包,而且可用带宽也经常发生波动。无线信道的特性和终端的地理位置分布相关,信道特性相差很大。通常距离基站近的终端信道条件好,距离基站远的终端信道条件差,远近终端的业务要达到相同的QoS必须付出不同的代价[9]。在无线宽带多媒体网络中,终端允许移动,因此必须解决漫游和切换问题。此外,终端移动导致信道特性变化,使得无线链路的QoS随之变化,必须采取适当的措施来维持链路性能。最后,在无线多媒体网络中,系统容量并不是常熟。系统容量和业务速率、误码率、时延、抖动等QoS要求密切相关。为了维持系统的稳定,保证已存在业务的QoS,必须采用适当的无线资源测量方法,然后对无线资源实施相应的控制。4.2.2较低的误码率无线信道的误码率比较高。高度压缩后的视频码流对传输时产生的误码非常敏感,一旦发生了误码不仅影响该误码数据的恢复,而且还会影响与之相关的其他数据的恢复,造成“误码扩散”,使恢复出来的信号面目全非。所以,现有的视频编码方案H.263、MPEG450 中都提供了出错抑制的选项,如重同步标记(ResynchronizationMarker)、可逆变长编码RVLC(Reversiblevariablelengthcoding)、数据分割(DataPartitioning)等等,而且视频专家组在制定H.264之初就把适应网络传输,对于传输出错具有鲁棒性和高效的视频压缩共同定为设计目标[10]。4.3技术难点4.3.1网格类型差别对视频监控影响对比网络类型差别对视频监控影响对比如表4.1所示。表4.1网络类型差别对视频监控影响对比对比分析无线网络有线网络用户体验不受时间和随时地点的约束,可以查看被监控点的情况。需要有线连接,不方便随时随地使用。稳定性无线网络受外界环境因素影响较大,如天气、障碍物、低频噪音、距离、其它无线设备等,因环境的变化稳定性也随之变化,稳定性较差。有线网络通常采用双胶线、光纤组网,受环境及其它因素影响较小,稳定性非常好。带宽无线网络为共享式网络,所有终端设备共享无线带宽,如:54Mbps(实际有效带宽约30Mbps)成熟Mesh网络有10个用户,则每个用户理想带宽值约:5.4Mbps。有线网络为交换式网络,每个终端独享每个端口带宽,现在所有交换设备速率最低为10/100Mbps,甚至1000Mbps、10Gbps或更高。误码率无线信道的误码率比较高。高压缩后的视频码流对传输时产生的误码非常敏感,还会造成“误码扩散”现象。有线网络通常采用双胶线、光纤组网,受环境及其它因素影响较小,稳定性非常好。延时无线受外界环境、设备自身以及应用延时较大,特别是在Mesh网络中数据通过中间节点进行多跳转发,每一跳至少都会带来一些延迟,随着无线Mesh网络规模的扩大,跳接越多,积累的总延迟就会越大。在延时方面除受业务应用影响外,有线网络受外界环境影响较小(可忽略),设备自身处理能力较强,正常使用情况下有线网络延时处≤1ms-5ms左右。地理位置无线信道的特性和终端的地理位置分布相关,信道特性相差很大。安装稍有困难,维护成本高。50 4.3.2移动流媒体传输协议选择(1)方案一:HTTP协议作为最简单和原始的流媒体解决方法,HTTP渐进下载唯一显著的优点在于它仅需要维护一个标准的Web服务器,而这样的服务器基础设施在互联网中已经普遍存在,其安装和维护的工作量和复杂性比起专门的流媒体服务器来说要简单和容易得多。然后其缺点和不足却也很多,首先是仅适用于点播而不支持直播,其次是缺乏灵活的会话控制功能和只能的流量调节机制,再次是客户端需要磁盘空间以缓存整个文件而不适合于嵌入式设备等。(2)方案二:RTSP/RTP协议基于RTSP/RTP的流媒体系统专门针对大规模流媒体直播和点播等应用而设计,需要专门的流媒体服务器支持[11],与HTTP渐进下载相比起来主要有如下的优势:1)流媒体播放器的实时性。与渐进下载客户端需要先缓冲一定数量媒体数据才开始播放不同,基于RTSP/RTP的流媒体客户端几乎在接收到第一帧媒体数据的同时就可以启动播放。2)支持进度条搜索、快进、快退等高级VCR控制功能。3)平滑、流畅的音视频播放体验。在基于RTSP的流媒体会话期间,客户端与服务器端之间始终保持会话联系,服务器端能够对来自客户端的反馈信息动态做出响应。当因网络拥塞等原因导致可用带宽不足时,服务器可以通过适当降低帧率等方式来智能调整发送速率。此外,UDP传输协议的使用使得客户端在检测到有丢包发生时,可选择让服务器仅选择性地重传部分重要的数据(如关键帧),而忽略其他优先级低的数据,从而保证在网络不好的情况下客户端也仍然能连续、流畅地进行播放。4)支持大规模用户扩展。普通的Web服务器主要针对大量小的HTML文件下载而进行优化,在传输大容量媒体文件方面缺少性能优势。而专业的流媒体服务器在大容量媒体文件硬盘读取、内存缓冲和网络发送等方面进行了优化,可支持大规模用户接入。5)支持网络层多播。网络层多播允许单一媒体流共享网络路径,同时发送到多个客户端,可大大缩减网络带宽需求。只要借助专门的流媒体服务器才能实现这一功能。6)内容版权保护。在渐进式下载模式中,下载的文件缓存在客户端硬盘的临时目录中,用户可将其拷贝到其他位置以供以后再次播放,而在基于RTSP/RTP[13]的流媒体系统中,客户端只在内存中维持了一个较小的解码缓冲区,播放后的媒体数据随时清除,用户不容易截取和拷贝。此外还可以利用DRM等版权保护系统进行加密处理[12]。尽管如此,基于RTSP/RTP50 的流媒体系统在实际的应用部署特别是移动互联网应用中仍然遇到了不少问题,主要体现在:1)与Web服务器相比,流媒体服务器的安装、配置和维护都较为复杂,特别是对于已经建有CDN(内容分发网络)等基础设施的运营商来说,重新安装配置支持RTSP/RTP的流媒体服务器工作量很大。2)RTSP/RTP协议栈的逻辑实现较为复杂,与HTTP相比支持RTSP/RTP的客户端软硬件实现难度较大,特别是对于嵌入式终端来说。3)RTSP协议使用的网络端口号(554)可能被部分用户网络中的防火墙和NAT等封堵,导致无法使用。虽然有些流媒体服务器可通过隧道方式将RTSP配置在HTTP的80端口上承载,但实际部署起来并不是特别方便。(3)方案三:HTTPLivingStreaming苹果公司的HTTPLiveStreaming正式为了解决这些问题应运而生的,其主要特点是:放弃专门的流媒体服务器,而返回到使用标准的Web服务器来递送媒体数据;将容量巨大的连续媒体数据进行分段,分割为数量众多的小文件进行传递,迎合了Web服务器的文件传输特性;采用了一个不断更新的轻量级索引文件来控制分割后小媒体文件的下载和播放,可同时支持直播和点播,以及VCR类会话控制操作。HTTP协议的使用降低了HTTPLiveStreaming系统的部署难度,同时也简化了客户端(特别是嵌入式移动终端)软件的开发复杂度。此外,文件分割和索引文件的引入也使得带宽自适应的流间切换、服务器故障保护和媒体加密等变得更加方便。与RTSP/RTP相比,HTTPLiveStreaming的最大缺点在于它并非一个真正的实时流媒体系统,在服务器和客户端都存在一定的起始延迟。而且目前主要面向移动多媒体应用,推荐支持的最高视频码率仅为800Kbps,对于更高码率特别是高清视频的支持程度尚需进一步的探究和验证[14]。归纳起来,上述三种流媒体协议的对比以及私有协议如表4.2所示。由前面的协议说明和表的详细对比,我们对三种协议有了大体了解,对于实时视频监控系统中所使用的协议,首当其冲的便是实时性的要求,因此需要采用RTSP/RTP协议,但由于此协议的通信端口会被限制或占用,因此我们最终选中基于RTSP/RTP协议开发的私有协议,此协议采用与HTTP相同的通信端口,从而弥补了RTSP/RTP协议的一些缺点,另外简化了RTSP/RTP协议中一些冗余的部分,使之适合移动视频监控的场合[15]。表4.2私有协议50 协议渐进下载播放RTSP/RTPHTTPLiveStream私有协议服务器端实现普通Web服务器流媒体服务器普通Web服务器普通Web服务器客户端实现容易较难容易容易系统安装、配置简单复杂简单简单支持业务类型点播直播、点播直播、点播直播实时性(起始时延)>30s<2s约30s(推荐配置下)<2s客户端缓冲区硬盘,文件大小内存,小内存,较小内存,小VCR支持部分支持支持,定位精度高支持,定位精度略差部分支持网络带宽适应不支持部分服务器支持支持(灵活流间切换)不支持服务器故障保护不支持不支持支持支持DRM支持差较好好较好防火墙穿透性好差好好网络层多播不支持支持不支持支持适用范围低码率短视频(如广告、片花等)大规模、低延迟实时流媒体系统嵌入式移动流媒体(实时性要求不是太高)智能移动终端(实时性要求较高)4.4本章小结本章阐述技术方案研究与选择,从视频监控系统的体系结构与基本原理出发,简要介绍了移动视频监控的挑战及技术难点,通过对比,选择较优的移动流媒体传输协议,为下一章客户端的设计做准备。50 第五章客户端设计5.1系统总体设计5.1.1系统总体设计结构系统设计结构如图5.1所示。①客户端业务信息相关流媒体播放器监控终端软件③基于流媒体技术的视频监控平台业务管理模块视频监控服务器模块DDNS管理模块流媒体服务器模块④其他外围网元SMS系统支撑系统②网络摄像终端编码器云台摄像头报警器控制协议控制协议接口调用接口调用图5.1系统总体设计结构5.1.2业务流程(1)用户登录流程用户初次登陆客户端,提醒用户注册邮箱,注册邮箱有两个作用:1)用邮箱将用户的多个账户的多个摄像头绑定起来,方便用户的使用,增强体验;2)系统一些订阅信息可以及时通过邮件的形式让用户获悉,形成良好了用户黏性。用户登录流程如图5.2所示。50 图5.2用户登录流程(2)视频监控流程图5.3用户使用视频监控业务流程50 视频观看流程如图5.3所示。1)网络摄像终端定时向DDNS服务器注册网络节点信息;2)用户通过移动Android平台的打开视频监控的客户端,并输入正确的身份验证信息;3)视频监控平台对用户身份进行鉴权,若鉴权通过则进入后续流程;若鉴权未通过则提示用户鉴权失败,本流程结束;4)视频监控平台根据用户请求,向移动终端返回监控设备的信息;5)移动终端与网络摄像终端建立RTSP连接,进行监控点的流媒体传输;6)用户根据自己的需要,通过移动终端客户端软件发送前端监控设备的操作指令;网络摄像终端向移动终端发送操作后的媒体流;7)用户结束监控点的观看,移动终端与网络摄像终端拆除RTSP连接;8)用户退出移动终端客户端,监控平台与移动终端断开TCP/UDP连接。(3)监控点报警流程图5.4通过短消息报警的业务流程监控点报警流程如图5.4所示。1)监控点触发手动报警按钮或者网络摄像终端自动监测到报警信号;2)网络摄像终端想视频监控平台发送报警信息,平台返回相应信息;50 3)平台将报警信息发送至短消息业务系统;4)短消息系统将报警信息发送至用户终端;5)视频监控平台启动报警录像,想监控点网络摄像终端设备请求进行视频录像;6)网络摄像终端向流媒体服务器模块传输监控点的视频媒体流;7)用户可以更具自己的需要立刻查看监控点现场情况,观看监控视频流,若用户无需观看,则流程跳过此步骤;8)手动关闭报警按钮或者自动监测到报警信号消失;9)监控点网络摄像终端向视频监控平台发送停止报警信息,平台返回相应信息;10)视频监控平台将报警恢复信息发送至短消息系统;11)短消息系统将报警恢复信息发送至用户终端;12)视频监控平台向监控点网络摄像终端发送停止录像请求,监控点返回相应。5.2客户端UI设计用户登陆客户端后即可查看已经绑定了的监控摄像头,同时保存用户退出客户端前最后查看的摄像头,下一次用户登录客户端,将播放该摄像头的实时监控视频。5.2.1典型业务流程描述本小节主要描述典型的业务流程,并对重要的流程附上原型图解和文字说明。因为其他部分的功能类似,在此限于篇幅,不一一列举。(1)登录退出图5.4登陆退出客户端界面50 客户端登录退出界面如图5.5所示。(2)视频监控界面声音拍照对讲报警更多视频监控图5.6视频监控界面视频监控界面如图5.6所示。1)“收音”及“对讲”功能实现监控画面的声音采集及对讲。点击“收音”可听到当前监控画面的声音,点击“对讲”可通过手机和摄像头,将自己的声音传送到监控画面本地。2)“拍照”功能实现对当前画面的抓拍存档功能。3)“报警”快速拨通报警电话110。4)“全屏”按钮点击实现全屏观看监控视频。5)个方向图标表示的意思为:放大,缩小,右移,左移,上移,下移,左右旋转,上下旋转)视频监控界面如图5.7所示。图5.7视频监控界面50 5.2.2客户端实现(1)加载与登录界面图5.8加载与登陆界面图5.8为加载与登录界面。(2)观看视频界面图5.9观看视频界面观看视频界面如图5.9所示。(3)报警界面报警界面如图5.10所示。50 图5.10报警界面5.3数据库设计系统数据库关系图如图5.11所示。图5.11系统数据库关系图5.4相关接口和标准为了使整个系统能够协调运作起来,各个平台与终端的接口和标准必须要有合理统一的规定。用户在下载流媒体内容时,流媒体业务平台和终端用户之间采用标准的HTTP或WAP相关下载协议,将流媒体内容从流媒体下载服务器下载到手机端。用户在实时播放流媒体文件时,流媒体业务破平台与终端用户之间采用标准的RTSP、RTCP、RTP等协议来传送流媒体文件,并实现播放和基本的控制功能[16]。50 5.5本章小结本章分别介绍了详细的业务流程、Android客户端的设计,业务流程方面,叙述流程的每一个步骤,基本上对应于程序的实现,因此较为直观;客户端的设计,采用原型模型,用图示的方式表现客户端的一些操作流程,同样很直观。本文中服务器端的各个模块的设计和思路并不是重点,所以在此省略。50 第六章总结与展望6.1设计与总结3G以前的手机视频监控只是单纯的图片传输,而在3G高带宽的支持下,手机视频图像的传输能够真正做到时时监控,随时随地了解监控现场情况。本课题的研究中,我主要完成了以下工作:(1)在3G环境下,构建了合理的无线视频监控的架构,使用先进的视频编解码技术保障数据传输。(2)选用了合理的数据存储方案,选择优质的存储设备,解决了庞大的视频数据存储问题。(3)设计了合理有效的监控平台,为用户终端的有效使用提供了保障。(4)设计了先进的手机媒体播放器,提高了监控质量,也为其他方面的日常使用打下了基础。6.2设计与改进(1)实时摄像头较慢,与当前网络环境有关,多个终端直连摄像头会导致数据拥塞,也与手机直连摄像头有关。解决办法,采用流媒体服务器转发和客户端直连摄像头结合的方式解决此问题。(2)采用流媒体服务器以后,客户端无法控制摄像的云台,需要服务器端转发对摄像头的控制指令来达到控制摄像头的目的[17]。6.3设计与展望通过本课题研究,使得3G手机视频监控不单只是单纯用手机进行视频浏览,而是一整套的安全防控解决方案。对现场终端达到防控条件的图像进行控制、抓拍、录像等各种应用,增强其可控性,把相关监控业务都综合起来,使整个监控变成了一种可控的应急性行为。例如,当有突发情况发生时,系统将自动以短信、彩信或视频片段的方式通知用户,用户可以马上通过手机实时调看现场视频,一方面用以确认现场情况,另一方面减少误报率,使整个系统运作更加有效和实用。从其安全便捷的操作,将使手机视频监控的应用领域进一步拓宽,使得手机视频监控日渐步入人们的日常生活。50 结束语本文采用网络摄像终端,动态配置IP,接入到网络后,可以自动配置DDNS地址,并主动地向目标地址发起连接。用户可以透明地访问网络摄像终端。同时采用数字接口传输数字视频,不会带来干扰和衰减,无论多远的距离,都能够始终保持稳定的图像质量。全数字化处理技术不会因模拟和数字之间来回转换带来图像质量的损耗。可以分别提供高质量、高带宽、低延时的预览视频流和用于录像的视频流,分别保证清晰度、易存储的特性。手机视频监控与远程控制应用所涉及到的相关技术已经很成熟,但还存在着一定的问题,其应用所面临的最大问题是使用者对于手机视频查看、控制的应用的理解是比较抽象的还缺乏更深入形象的理解。要实现快速推广应首先以某些行业的特定场景的应用为基础,来增加人们对这项技术的熟悉。比如,应用于治安管理中巡警发现疑似被盗车辆时可用手机拍摄车牌图像,发送到中心平台与车牌数据库中的进行比对,中心平台如果确认是违法或被盗车辆则可立即通知巡警采取行动。这样便可以提高治安管理的效率。远程监控系统同样可以应用于医学方面,现在越来越多的人在外地工作,那么对于家中的病人或者老人便不能很好的监护。可以通过支持远程监控的医疗设备对家人实行实时监护。对于简单的问题可以通过监控设备自行解决,对于解决不了的问题可及时与医务人员联系并采取相应措施。50 参考文献[1]刘仙艳.移动终端开放平台-Android[J].研究与开发.南京:中国学术期刊电子出版社,2011:51-52.[2]常志沛.基于Android的智能手机监控系统的设计与实现[D].大连:大连海事大学,2011.[3]戴祖彬.基于GPRS的主动式移动视频监控系统的设计和实现[D].厦门:厦门大学,2009.[4]付少华,付红桥,王政.基于3G网络的手机移动视频监控系统的设计[J].计算机应用,2011,31(01):70-72.[5]SchulzrinneH,CasnerS,FrederickR,etal.RTP:aTransportProtocolforReal-timeApplications,RFC3550,July2003.[6]李伶,李太君.基于3G的远程监控系统[J].通信技术,2010,43(225):130-132.[7]Marvell,MarvellPXA310HandheldPlatformDevelopmentKitJanuary25,2008.[8]ChongyuWei,LuweiZhao.DesignandImplementationofaTD_SCDMAVideoMonitoringSystemBasedonAndroid[J],IEEEProc.OnProcediaEngineering,2012,29(08):1066-1070.[9]杨鑫,牛建伟,胡建平.一种基于H.264的智能手机监控系统设计与实现[J].微电子学与计算机,2006,23(09):118-119.[10]胡海勇,胡黎玮,徐志江,杨伟伟.基于塞班智能手机的视频监控设计与实[J].杭州电子科技大学学报,2010,30(05):157-160.[11]YongquaXia,HanShen,XianyingDong.TheDesignof3GMobileVideoSurveillanceSystemBasedOnJ2MEPlatform[J],IEEEProc.OnProcediaEngineering,2011,15(08):2423-2427.[12]FengshengYang.AndroidApplicationDevelopmentRevelationMachineryIndustryPressJanuary,2010.[13]吴建华,徐浩,丁月华.移动网络手机实时监控系统的设计与实[J].计算机工程与设计,2010,31(10):2196-2198,2269.[14]刘冠群.3G环境下手机智能监控的设计与实现[D].成都:电子科技大学,2010.[15]王超,郑培元,卜佳俊,杨智.基于BREW手机的移动监控客户端设计[J].计算机工程与设计,2010,31(07):1401-1404,1428.[16]苏征远,易燕,赵庆江.基于3G的流媒体服务技术研究[J].电子设计工程,2012,20(01):74-76.[17]秦波涛.基于J2ME的手机视频监控系统的设计和实现[D].西安:西安电子科技大学.2010.50 致谢本文是在导师章国安教授的悉心指导下完成的,首先感谢导师章国安教授对我在校外单位进行毕业设计的支持与帮助,在百忙之中抽出时间对我的毕业设计提出宝贵意见和建议,关注我的毕业设计进程。老师严谨的治学态度,孜孜不倦的工作精神以及清晰敏锐的理解力时刻影响着我,使我顺利地完成了在校外进行毕业设计。在指导毕业设计的同时,老师不忘关心每个学生的毕业和工作问题。在毕业问题上,老师晓以利弊,耐心的教诲和鼓励使得我顺利通过最后一次全国计算机等级考试二级C++,取得笔试良好,上机优秀,总成绩良好的好成绩。在工作问题上,离开学校进行校外毕业设计之前不忘督促我与校外单位签订三方协议并顺利签订劳动合同。在此,再次向导师表示深深的谢意,同时祝导师身体健康,工作顺利,桃李满天下。在毕业设计过程中,我深刻体会到一个应用系统不是一个人或者几个人可以实现的,而是需要一个团队的所有人团结协作。这让我意识到自己所掌握知识的局限性,为自己毕业以后的工作学习指明了方向。光阴荏苒,转眼就到了毕业季,感谢我在南通大学四年的所有科目老师,因为你们精彩的教学方法和认真负责的治学态度,使我顺利地完成了各门科目的学习。在此不一一致谢。感谢我所有的同学,我们一起学习,一起生活,一起度过难忘的大学时光。相信离开校园的我们,将来一定会怀念我们一起学习生活的那些年。最后,再次感谢大学四年认识的每一个人,是你们组成了我完整的大学生活,祝大家前程似锦,为母校争光。50 附录手机客户端源程序:packagecom.iueye.android.server;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Date;importjava.util.List;importorg.apache.http.HttpResponse;importorg.apache.http.client.ClientProtocolException;importorg.apache.http.client.ResponseHandler;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.impl.client.BasicResponseHandler;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.util.EntityUtils;importcom.iueye.android.MainsActivity;importcom.iueye.android.R;importcom.iueye.android.WarningActivity;importcom.iueye.android.util.MD5Util;importcom.iueye.android.util.XmlUtil;importcom.iueye.android.vo.AlarmInfo;importcom.iueye.android.vo.Device;importcom.iueye.android.vo.SetInfo;importandroid.app.Activity;importandroid.app.ProgressDialog;importandroid.content.Context;importandroid.content.SharedPreferences;importandroid.graphics.Bitmap;50 importandroid.graphics.Canvas;importandroid.graphics.Bitmap.Config;importandroid.net.ConnectivityManager;importandroid.net.NetworkInfo;importandroid.telephony.TelephonyManager;importandroid.util.Log;importandroid.view.View;importandroid.widget.Toast;publicclassIueyeServer{privatefinalStringTAG=IueyeServer.class.getName();privateListdeviceList;privateStringserverSoftVersion;privateContextcontext;publicListgetDeviceList(){returndeviceList;}publicStringgetServerSoftVersion(){returnserverSoftVersion;}publicIueyeServer(){}publicIueyeServer(Contextcontext){this.context=context;}/***检测服务器软件版本*0:检测成功*大于0:检测失败50 *1:服务器没响应或网络异常*2:ClientProtocolException*3:IOException*@return*/publicintcheckVersion(){StringresponseBody="";intisUpdate=1;Stringurl="http://www.iueye.com/userdevice.flow?method=getSoftInfo";DefaultHttpClienthttpClient=newDefaultHttpClient();HttpGethttpGet=newHttpGet(url);ResponseHandlerresponseHandler=newBasicResponseHandler();try{responseBody=httpClient.execute(httpGet,responseHandler);//Log.i(TAG,"responseBody(checkVersion)=="+responseBody);if(responseBody.indexOf("Y")!=-1){isUpdate=0;//2.3intstart=responseBody.lastIndexOf("")+24;intend=responseBody.indexOf("");serverSoftVersion=responseBody.substring(start,end);//Log.i(TAG,">>serverSoftVersion:"+serverSoftVersion);}else{isUpdate=1;}}catch(ClientProtocolExceptione){isUpdate=2;}catch(IOExceptione){isUpdate=3;50 }returnisUpdate;}/****登陆*0:成功*大于0:失败*2:ClientProtocolException*3:IOException*1:用户名或者密码错误***/publicintlogIn(Stringuser,Stringpws){StringresponseBody=null;Dated=newjava.util.Date();Stringtime=String.format("%d",d.getTime());intisConnection=1;StringDigest=null;Digest=MD5Util.EncoderByMd5(user+time+"cellcom");TelephonyManagertm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);Stringimei=tm.getDeviceId();Stringurl="http://121.14.119.122/api/monitorservice_logincheck.flow?username="+user+"&password="+pws+"&source=android:"+imei+"×tamp="+time+"&authstring="+Digest;//Log.d(TAG,"url>>"+url);DefaultHttpClienthttpclient=newDefaultHttpClient();HttpGethttpget=newHttpGet(url);ResponseHandlerresponseHandler=newBasicResponseHandler();50 try{responseBody=httpclient.execute(httpget,responseHandler);//Log.i(TAG,"responseBody=="+responseBody);//Log.d(TAG,"return=="+responseBody.indexOf("Y"));//------------------------deviceList=XmlUtil.getDevices(responseBody);//Log.i(TAG,"deviceList="+deviceList);//------------------------if(responseBody.indexOf("Y")!=-1){isConnection=0;intstart=responseBody.lastIndexOf("")+24;intend=responseBody.indexOf("");serverSoftVersion=responseBody.substring(start,end);//Log.i(TAG,">>serverSoftVersion:"+serverSoftVersion);}else{isConnection=1;}}catch(ClientProtocolExceptione){//TODOAuto-generatedcatchblockisConnection=2;e.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblockisConnection=3;e.printStackTrace();50 }returnisConnection;}/***记住用户名和密码**/publicvoidrememberUser(Contextcontext,StringuserId,Stringpassword,booleanisRemind){SharedPreferencespre1=context.getSharedPreferences("daniao",Activity.MODE_PRIVATE);SharedPreferences.Editoredit=pre1.edit();if(isRemind){edit.putString("user",userId);edit.putString("pws",password);}edit.putBoolean("remind",isRemind);edit.commit();}/***控制云台**0:成功*大于0:失败*2:Exception*****/publicintcontrol(Stringuri){intret=1;DefaultHttpClienthttpclient=newDefaultHttpClient();HttpGetrequest=newHttpGet(uri);try{HttpResponseresponse=httpclient.execute(request);if(response.getStatusLine().getStatusCode()==200)50 {ret=0;Log.d(TAG,"control:=200");}else{ret=1;Log.d(TAG,"control:!=200");}}catch(Exceptionex){ex.printStackTrace();ret=2;}returnret;}/****读取网络设置**/publicSetInfogetParam(Stringip,Stringhttp_port){SetInfosetInfo=newSetInfo();Stringurl="http://"+ip+":"+http_port+"/get_camera_params.cgi?";DefaultHttpClienthttpclient=newDefaultHttpClient();HttpGetrequest=newHttpGet(url);try{HttpResponseresponse=httpclient.execute(request);if(response.getStatusLine().getStatusCode()==200){StringstrResult=EntityUtils.toString(response.getEntity());//Log.d("daniao",strResult);intbegin1=strResult.indexOf("vbright=");50 intend1=strResult.indexOf(";",begin1);Stringbright=strResult.substring(begin1+8,end1);intj=Integer.parseInt(bright);if(j>=0&&j<=100){//sbBright.setProgress(j);setInfo.setSbBright(j);}//etBright.setText(bright);//Log.d("daniao","bright="+bright);intbegin2=strResult.indexOf("vcontrast=");intend2=strResult.indexOf(";",begin2);Stringcontrast=strResult.substring(begin2+10,end2);intk=Integer.parseInt(contrast);if(k>=0&&k<=100){//sbContrast.setProgress(k);setInfo.setSbContrast(k);}//Log.d("daniao","contrast="+contrast);//etContract.setText(contrast);intbegin3=strResult.indexOf("mode=");intend3=strResult.indexOf(";",begin3);Stringmode=strResult.substring(begin3+5,end3);//Log.d("daniao","mode="+mode);if(mode.equals("0")||mode.equals("1")){//rbInside.setChecked(true);setInfo.setRbInside(true);}elseif(mode.equals("2")){50 //rbOutside.setChecked(true);setInfo.setRbOutside(true);}intbegin4=strResult.indexOf("framerate=");intend4=strResult.indexOf(";",begin4);Stringframe=strResult.substring(begin4+10,end4);//Log.d("daniao","frame="+frame);if(frame.equals("25")||frame.equals("12")){//rbImage.setChecked(true);setInfo.setRbImage(true);}elseif(frame.equals("6")||frame.equals("3")){//rbContinue.setChecked(true);setInfo.setRbContinue(true);}}else{Log.d("daniao","no");}}catch(Exceptionex){ex.printStackTrace();}returnsetInfo;}/****@return返回服务器告警信息对象*/publicAlarmInfogetAlarmInfo(StringloginName){50 StringalarmInfoResult="";//StringloginName=this.loginName;Dated=newjava.util.Date();Stringtime=String.format("%d",d.getTime());StringDigest=MD5Util.EncoderByMd5(loginName+time+"cellcom");Stringurl="http://121.14.119.122/api/userdevice.flow?method=getAlarmInfo&username="+loginName+"×tamp="+time+"&authstring="+Digest;AlarmInfoinfo=null;alarmInfoResult=httpRequestInfo(url);if(alarmInfoResult.indexOf("Y")!=-1){XmlUtilutil=newXmlUtil();info=util.getAlarmInfo(alarmInfoResult);}else{info=null;}returninfo;}publicStringsetAlarmInfo(StringloginName,StringisAlarm,StringalarmPhone,StringisAlarmPhoto,StringisAlarmRecord,StringalarmMethod){//Log.d("daniao",">>进入设置告警");StringalarmInfoResult="";Dated=newjava.util.Date();Stringtime=String.format("%d",d.getTime());StringDigest=MD5Util.EncoderByMd5(loginName+time+"cellcom");50 StringBuildersb=newStringBuilder("http://121.14.119.122/api/userdevice.flow?method=setAlarmInfo");sb.append("&username="+loginName);sb.append("×tamp="+time);sb.append("&authstring="+Digest);sb.append("&schedule_enable="+isAlarm);sb.append("&phone="+alarmPhone);sb.append("&monitorMod="+isAlarmPhoto+isAlarmRecord);sb.append("&contactMod="+alarmMethod);alarmInfoResult=httpRequestInfo(sb.toString());returnalarmInfoResult;}/****@paramurl*客户端请求地址*@return从服务器返回XML请求信息*/publicStringhttpRequestInfo(Stringurl){Stringresult="";Log.i("daniao","客户端发送的请求地址:"+url);DefaultHttpClienthttpclient=newDefaultHttpClient();HttpGethttpget=newHttpGet(url);ResponseHandlerresponseHandler=newBasicResponseHandler();try{result=httpclient.execute(httpget,responseHandler);//Log.i("daniao",">>服务器返回的结果信息"+result.toString());}catch(ClientProtocolExceptione){50 //Log.e("daniao","客户端获取HTTP请求信息出错 "+e.getMessage());}catch(IOExceptione){//Log.e("daniao","客户端获取HTTP请求信息出错 "+e.getMessage());}returnresult;}/***拍照***/publicvoidgetPhoto(intscreenWidth,intscreenHeight,Viewcv){Stringfname="/sdcard/"+"test.png";Bitmapbmp=Bitmap.createBitmap(screenWidth,screenHeight/2,Config.ARGB_8888);cv.draw(newCanvas(bmp));try{FileOutputStreamout=newFileOutputStream(fname);if(out!=null){bmp.compress(Bitmap.CompressFormat.PNG,90,out);}}catch(FileNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}publicStringgetAdr(intcmd,Stringpassword,Stringip,Stringhttp_port,Stringusername){50 if(password.trim().length()==0){Log.d("daniao","1111");//return"http://"+ip+":"+http_port+"/cgi-bin/decoder_control.cgi?&command="+cmd+"&user="+username+"&pwd=";return"http://"+ip+":"+http_port+"/decoder_control.cgi?&command="+cmd+"&user="+username+"&pwd=";}else{Log.d("daniao","222");//return"http://"+ip+":"+http_port+"/cgi-bin/decoder_control.cgi?&command="+cmd+"&onestep=0&user="+username+"&pwd="+password+"";return"http://"+ip+":"+http_port+"/decoder_control.cgi?&command="+cmd+"&onestep=0&user="+username+"&pwd="+password+"";}//return"rtsp://fox:789123@113.240.220.25/h264/ch1/sub";}publicStringgetAdr1(inti,Stringpassword,Stringip,Stringhttp_port,Stringusername){if(password.trim().length()==0){//return"http://"+ip+":"+http_port+"/cgi-bin/camera_control.cgi?&luser="+username+"&lpass=¶m="+i+"&value=";return"http://"+ip+":"+http_port+"/camera_control.cgi?&luser="+username+"&lpass=¶m="+i+"&value=";}else50 {//return"http://"+ip+":"+http_port+"/cgi-bin/camera_control.cgi?&luser="+username+"&lpass="+password+"¶m="+i+"&value=";return"http://"+ip+":"+http_port+"/camera_control.cgi?&luser="+username+"&lpass="+password+"¶m="+i+"&value=";}//return"rtsp://fox:789123@113.240.220.25/h264/ch1/sub";}/**/**检测是否有网络***/publicbooleaninternet(){ConnectivityManagerconnectivity=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);if(connectivity==null){returnfalse;}else{NetworkInfo[]info=connectivity.getAllNetworkInfo();if(info!=null){for(inti=0;i

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

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

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