3G移动通信技术网络在无线视频传输中的应用

3G移动通信技术网络在无线视频传输中的应用

ID:34157575

大小:2.32 MB

页数:69页

时间:2019-03-04

上传者:beiai1218
3G移动通信技术网络在无线视频传输中的应用_第1页
3G移动通信技术网络在无线视频传输中的应用_第2页
3G移动通信技术网络在无线视频传输中的应用_第3页
3G移动通信技术网络在无线视频传输中的应用_第4页
3G移动通信技术网络在无线视频传输中的应用_第5页
资源描述:

《3G移动通信技术网络在无线视频传输中的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

分类号:密级:UDC:编号:201321901003硕士学位论文3G移动通信技术网络在无线视频传输中的应用论文作者:孙岩学生类别:全日制学科门类:工学学科专业:物理电子学指导教师:徐晓辉职称:研究员 ThesisSubmittedtoHebeiUniversityofTechnologyforTheMasterDegreeofPhysicalElectronics3GMobileCommunicationsNetworkintheApplicationoftheWirelessVideoTransmissionBySunYanSupervisor:Prof.XuXiaohuiDecember2016 摘要伴随信息技术的革新和发展,3G技术俨然成为现阶段的技术热点。同时,视频编码压缩技术不断向网络技术领域发展,这就使得多媒体技术在人们的日常生活中应用的更加广泛,为视频信号的长距离通信传输提供了支持。不过,因为传统有线视频监控系统在长距离布线方面存在诸多问题和困难,所需要的成本开支巨大,而无线3G技术的出现无疑为视频数据远距离传输提供了重要发展方向。当前3G网络技术逐渐完善,所能实现的覆盖范围越来越大。3G技术和视频H.264编码压缩技术的结合,是一种能够解决当前远程视频监控传输的重要方案,避免了传统2G或有线系统建设带来的建设成本高、2G网络传输速度慢的问题出现,是一种真正的实时远距离无线传输视频数据的技术。本文选用S3C6410为核心处理器,搭载USB摄像头、3G模块和热释电传感器模块,通过免费开源的Linux操作系统搭建软件开发环境,设计并实现了一种基于3G无线网络的视频监控系统,用以解决远程监测系统布线困难、成本高、实时性低等问题。本文主要从以下几个方面对野外监测系统进行了研究:(1)在PC机上安装Linux操作系统,搭建交叉编译环境。(2)在S3C6410开发板上搭建运行Linux操作系统,其中涵盖了Bootloader、内核剪裁、文件系统移植等,涉及CMOS摄像头软件驱动和3G模块驱动移植。(3)利用热释电传感器实现对目标的智能识别,利用3G模块向用户进行彩信报警。(4)利用H.264技术对视频践行编解码,通过RTP/RTCP协议完成监控画面的实时回显。(5)借助FF-MPEG开源跨平台解码库资源,系统能够完成客户端解码以及显示播放。(6)利用QtCreator在Windows下开发人机交互界面,用于显示视频画面。关键字:3G,视频监控,热释电传感器I AbstractWiththerapiddevelopmentofinformationtechnology,3Gtechnologyhasbecomeoneofthehottechnology.Atthesametime,thecombinationofvideocodingandcompressiontechnologyandnetworktechnologymakesmultimediatechnologymorewidelyusedindailylife.Itmakesremotetransmissionoflargeamountsofvideodatabecomeareality.However,thetraditionalcablevideomonitoringinlong-distancetransmission,thereisadifficultproblemofwiring,cost,whichrequirestheintroductionof3Gtechnologytotransmitvideodata.Thedevelopmentof3Gnetworkisbecomingmoreandmoreperfect,andthecoverageismoreandmoreextensive.3GtechnologyandH.264encodingtechnology,cansolvetheremotevideomonitoringofcabletransmissionwiringdifficulty,highcostandlowrateof2Gnetworktransmission,realizereal-timeremotewirelesstransmissionofvideodata.ThisstudychoosesS3C6410asthecoreprocessor,equippedwithUSBcamera,3Gmoduleandpyroelectricsensormodule,softwaredevelopmentenvironmentLinuxoperatingsystemthroughfreeandopensource,thedesignandimplementationofavideomonitoringsystembasedon3Gwirelessnetwork,remotemonitoringsystemisusedtosolvethewiringdifficulty,highcost,lowreal-timeproblem.Inthisstudy,thefieldmonitoringsystemisstudiedinthefollowingaspects:(1)theLinuxoperatingsystemisinstalledonthePCmachine,andthecrosscompileenvironmentisbuilt.(2)implementationoftheLinuxoperatingsystemrunningonS3C6410developmentboard,includingBootloadertransplant,cuttingoutkernelandfilesystemtransplantation,andtransplantationandconfigurationofCMOScameradriverand3Gwirelessmoduledriver.(3)usingpyroelectricsensortorealizetheintelligentrecognitionoftarget,MMSalarmtotheusersbyusing3Gmodule.(4)usingH.264technologyforvideocodinganddecoding,throughtheRTP/RTCPprotocoltocompletethereal-timemonitoringofthescreendisplay.(5)usingtheopensourcecrossplatformFF-MPEGdecodinglibrary,toachievetheclient'sdecodinganddisplayplayback.(6)theuseofCreatorWindowsinQtdevelopmentofhuman-computerinteractionIII interface,usedtodisplaythevideoscreen.KEYWORDS:3G,VideoSurveillance,PyroelectricsensoIV 目录第一章绪论.................................................................................................................................11.1研究背景和意义...........................................................................................................11.2国内外发展现状...........................................................................................................21.2.1视频监控技术发展现状.................................................................................21.2.2无线通讯技术发展现状.................................................................................21.3研究内容.......................................................................................................................31.4论文组织结构..............................................................................................................3第二章系统相关理论及总体设计.........................................................................................52.1系统需求分析...............................................................................................................52.2系统总体设计...............................................................................................................52.3系统设计原则...............................................................................................................62.4系统关键技术...............................................................................................................72.4.13G通信网络.....................................................................................................72.4.2压缩编码技术...................................................................................................82.4.3实时传输协议.................................................................................................112.4.4嵌入式操作系统............................................................................................13第三章系统硬件总体设计....................................................................................................153.1处理器模块..................................................................................................................153.2视频采集模块.............................................................................................................163.33G通讯模块................................................................................................................173.4热释电红外传感器模块...........................................................................................173.5电源模块......................................................................................................................19第四章嵌入式Linux系统的建立.......................................................................................214.1开发平台搭建.............................................................................................................214.1.1建立交叉编译工具........................................................................................214.1.2Uboot的烧写................................................................................................224.1.3内核移植..........................................................................................................224.1.4根文件系统制作............................................................................................24第五章视频监控终端软件设计...........................................................................................275.1系统工作流程.............................................................................................................275.2视频采集......................................................................................................................27 5.2.1红外传感器.....................................................................................................285.2.2摄像头驱动移植............................................................................................285.2.2视频图像的采集............................................................................................295.2.3SD卡存储设备..............................................................................................325.3H.264编码..................................................................................................................325.4实时数据传输.............................................................................................................355.4.1视频流的RTP封装........................................................................................355.4.2RTP包的网络传输........................................................................................375.53G无线通信的实现..................................................................................................395.5.1驱动移植..........................................................................................................395.5.23G网卡配置...................................................................................................395.5.3彩信报警.........................................................................................................415.6客户端整体设计........................................................................................................445.6.1视频流接收与RTP解包.............................................................................445.6.2解码器移植.....................................................................................................465.6.3视频流解码.....................................................................................................475.6.4客户端软件设计............................................................................................485.6.5系统程序多线程设计...................................................................................49第六章系统测试......................................................................................................................516.1报警测试......................................................................................................................516.2视频传输测试.............................................................................................................516.2.1客户端显示测试............................................................................................516.2.2传输性能测试.................................................................................................53第七章结论与展望..................................................................................................................557.1结论...............................................................................................................................557.2对未来工作的展望....................................................................................................55参考文献......................................................................................................................................57致谢...............................................................................................................................................57攻读学位期间所取得的相关科研成果................................................................................61 第一章绪论1.1研究背景和意义安防是企事业单位、工厂、仓库正常生产生活之本。如何保障监控范围内的个人财产安全以及工地、仓库的各种生产资料、仪器设备的安全已经成为各企业单位和全社会关心的重要问题。因此,引入视频监控技术具有重要意义。当前有线视频监控系统用途主要用作固定地点的监控,系统中监控中心和监控地点之间需要进行通讯线路的布线,多见于野外场合,假如使用有线视频监控系统,则将会增加布线成本,使部分企业无法接受。由此,无线视频监控系统便凸显出其重要性。目前,无线远程视频监控技术已被广泛应用在工厂、油田、水文等各个领域,技术相对比较成熟。无线传输技术主要有蓝牙、WiFi、GSM/GPRS和3G,相较于蓝牙、WiFi技术传输距离较短无法满足系统需求的情况,GSM/GPRS虽然能够达到远程视频监控的目的,但是由于传输速率不高,导致传输的图像不清晰、视频不流畅,仍然不能满足用户期望的效果。而3G通讯技术的出现为无线视频监控带来了强大的技术支撑,使无线视频监控技术迈上了新的台阶。将3G通讯技术应用于野外视频监控系统具有以下几个优势:首先,避免了野外环境下布线困难的问题,具有布设简单,扩展性强,组网灵活,维护费用低和灵活性高的优点;其次,3G技术具有较高的网络传输速率,为传输高质量的视频图像信息提供了保障;最后,3G网络的应用使得监控人员不再局限于PC机等固定监控终端,手机、平板等移动终端通过3G网络也能进行实时监控,优化了用户体验[1]。基于此,本课题选用S3C6410为核心处理器,搭载摄像头、3G模块,和热释电传感器模块,通过免费开源的Linux操作系统搭建软件开发环境,设计了一套基于3G无线网络的野外视频监控系统。该系统一方面通过传感器和3G无线网络可以实现远程报警和实时采集传输视频图像;另一方面监控人员可以随时了解现场监控设备的工作状况,以便及时发现故障设备并进行针对性的检修,避免资源浪费。由此可见,本系统对于提高野外环境下图像采集效率、降低人工成本、优化设备管理方式具有十分重要的意义。1 1.2国内外发展现状1.2.1视频监控技术发展现状视频监控系统虽然时间不长,但大体上可以分为三个阶段。(1)第一阶段:模拟监控系统。模拟监控系统,尽管是第一代产品,不过其应用范围十分广泛,在当前视频监控领域仍保持一定的市场份额。模拟监控系统主要为模拟设备所搭建的闭路监控系统,整个系统由监控中心和前端组成。其中前端设备主要有云台和摄像机;监控中心包括控制设备、监视器和模拟录像机。(2)第二阶段:数字监控系统。该发展阶段所持续的时间不长,约在5年时间左右。数字监控系统系统主要由监控软件、采集卡和PC机组成。因为使用了数字信号,使得数据传输量有了成倍的增加,PC机需要具备图像处理速度。数字监控系统在视频成像和采集方面较上一阶段有了质的提升,同时视频影像数据还可以存储于存储介质中。数字监控系统也是当前占据市场份额最大的一种监控系统。(3)第三阶段:网络监控系统。网络监控系统是基于当前互联网高速发展的产物。监控系统前端设备主要功能是图像数据的采集,之后获取的数据借助网络实现向监控中心服务器的传输。网络带宽是制约当前网络监控系统发展的重要因素,因此网络监控系统重点在于编码压缩技术。现阶段主流的压缩算法有H261、JPEG等多种,能够满足一定程度上的网络监控系统要求[2]。1.2.2无线通讯技术发展现状随着无线传输技术的不断发展和逐步完善,将无线通讯技术应用到视频监控领域将成为一种必然趋势。(1)蓝牙技术。蓝牙技术主要用于短距离近场通信,是当前一项重要的无线通信技术,使用中,通常使用无线数据为载体完成近场无线通信,主要应用领域为移动或固定终端,传输频段为2.4HGzISM,速率为1Mbps,传输距离最大为十米,能够满足人们短距离传输数据的应用需求。(2)WiFi技术。WiFi是基于802.11协议的无线局域网接入技术,可以提供热点覆盖、低移动性以及高传输速率。国内外都非常关注WiFi的发展,目前已被广泛应用在家庭、学校、机场、商场等热点地区。但是WiFi技术同样存在传输距离短、信号穿透力差的缺点。(3)3G技术。近几年,国内外3G无线通讯技术日趋成熟,美国的巴顿公司开发的VisualityTM移动视频监控系统能够利用3G网络进行音视频的现场直播;新加坡电信公司(SingTel)能够为3G用户提供免费的视频传输服务,业务2 能够支持19个国际网络,使他们能够互相进行视频连接[3]。对于国内而言,2009年,工信部为三大通信运营商发放了3G牌照(中国移动为TD-SCDMA制式,中国电信为CDMA2000制式,中国联通为WCDMA制式)。此举标志着中国正式进入3G时代。经过几年时间的发展,我国3G业务迅猛发展,截至2015年,我国3G基站总数超过130万个,3G用户总数超过6个亿,为无线监控系统技术的发展提供了物理支持,无线监控系统成为视频监控技术的重要发展领域[4]。1.3研究内容为实现本文提出的基于S3C6410视频采集系统的应用,需要搭建ARM嵌入式开发平台,定制裁减linux操作系统,本系统涉及的内容主要包括针对人体的红外感应模块的设计;linux内核的移植;各模块驱动开发;视频数据的压缩、打包和存储;3G无线模块传输视频数据;监控端人机交互界面的开发等。系统以体积小、成本低、功耗低的视频采集系统为开发目标,硬件平台的CPU采用集成了数字视频和音频接口的ARM11嵌入式处理器S3C6410,应用CMOS摄像头来构建图像采集模块,软件平台采用免费、开源、功能模块可裁减的嵌入式linux操作系统,本文中还涉及到SD卡存储、太阳能电池供电等模块来构建整个系统。本文主要从以下几个方面进行研究:(1)在PC机上安装Linux操作系统,搭建交叉编译环境。(2)在S3C6410开发板上实现Linux操作系统的运行,包括Bootloader的移植、内核剪裁和文件系统的移植。(3)利用热释电传感器对目标进行识别并进行彩信报警,实现CMOS摄像头驱动和3G无线模块驱动的移植与配置。(4)利用V4L2接口编程、利用H.264技术压缩编码、RTP协议实现无线网络采集和传输。(5)利用开源跨平台的FFMPEG解码库,实现客户端的解码和显示播放。(6)利用QtCreator在Windows下开发人机交互界面,用于显示视频画面。1.4论文组织结构本论文共分为六章,各章节安排如下:第一章为主要介绍了课题研究的背景和意义、3G视频监控技术的国内外发展现状以及论文具体的研究内容和具体安排。第二章根据系统的功能需求阐述了系统总体设计方案并介绍了系统设计的3 相关理论技术。第三章为系统硬件总体设计,包括处理器模块、3G模块、摄像头模块、传感器模块以及电源模块。第四章为系统软件总体设计,搭建嵌入式系统平台,烧写Uboot、移植内核、制作根文件系统,对3G模块及摄像头模块的驱动进行移植。第五章是视频监控系统软件设计,主要完成视频的采集、H.264编码、3G无线传输,对报警系统和客户端进行设计,完成彩信报警和视频流的解码和显示。第六章是系统测试,在实验室环境中对视频监控系统进行报警系统和显示系统的模拟测试。第七章是结论与展望,对本视频监控系统的设计进行归纳总结,提出了系统的不足之处和今后的优化方向,为不断完善此监控系统提供帮助。4 第二章系统相关理论及总体设计本章节将对视频监控系统具体需求进行概述,提出系统所需要实现的多种功能和相关原则,按照现场的具体要求,确定合理设计方案,对系统所需的关键技术展开介绍。2.1系统需求分析随着监控设备自动化发展的逐步深入,在野外条件下应用无线监控终端设备,可以将图像信息进行采集保存,并借助现有的无线网络给监控中心实时发送,使得工作人员能及时处理突发事件,提高了监控手段的信息化、自动化程度,在一定程度上降低了工作量。根据野外视频监控系统的实际需要,本课题所设计的监控系统应具备以下几点功能:(1)选择合适的热释电红外传感器,利用红外感应器感知目标物体并快速启动CMOS摄像头对其进行图像采集存储,并进行彩信报警;(2)利用3G无线网络将实时采集到的图像信息传输至监控中心;(3)监控中心接收图像数据,通过建立良好的人机交互界面实现视频图像的显示播放。2.2系统总体设计基于系统的设计需求,本课题设计了一套视频信息采集传输系统,系统整体结构图如图2.1所示。系统主要由三部分组成,分别是数据采集和处理部分、数据传输部分以及数据接收和显示部分。数据采集、处理功能主要由系统图像采集和控制模块完成,其中采集模块负责对现场图像进行采集,控制模块负责对采集到的图像数据进行处理。数据传输部分主要是通过3G模块与3G无线网络进行连接,将压缩编码后的视频流数据打包远传至监控中心。数据接收和显示部分主要将接收到的数据包进行解包和解码,并在PC端实现视频图像的实时显示。5 图2.1系统整体结构具体来说,整个系统主要由核心处理器模块、传感器模块、数据采集模块、数据存储模块、3G通讯模块以及电源模块组成。具体工作原理如下:(1)通常情况下系统处于睡眠状态,只保留对热释电红外传感器模块进行供电。当传感器感应到人后,触发系统核心处理器快速启动,控制摄像头模块开始对监测区域进行视频采集,在系统运行时,视频流先存储于SD卡中,以备查阅;(2)系统触发开始采集的同时,以彩信方式向监控中心发送报警信息,提醒监控中心打开监控终端,监控人员登录系统后请求发送视频图像。由于传输带宽的限制,需要利用H.264标准对视频流先进行压缩编码,然后通过RTP/RTCP传输协议将压缩后的视频数据进行封包处理,最后通过3G无线网络实现数据包的远传;(3)监控终端工作在搭载Windows操作系统的PC机上,是使用Qt编写的一个窗口应用程序。终端通过网络对视频数据包进行接收,通过传输协议对其进行拆包得到H.264视频流数据,再利用解码器对其进行解码,最后通过人机交互界面完成视频图像在PC端的实时显示。(4)监控终端可以通过发送指令控制系统的启动与关闭。2.3系统设计原则本系统旨在为用户提供一套野外视频监控平台,在保证用户需求和系统稳定可靠的情况下,尽可能的降低成本,需要重点考虑以下几个方面的性能要求:(1)稳定性:作为野外条件下的监控系统,为了保证系统的持久性和稳定性,需要配备太阳能电池模块,提高系统的续航能力;(2)可靠性:红外感应器要具有较强的抗干扰能力,能够对感知物体进行有效甄别,防止系统误触发。6 (3)低功耗:要求系统平常处于睡眠状态,接收到红外信号后才被唤醒。降低系统的功耗,延长系统使用寿命;(4)易扩展:为了满足以后对其他目标的采集需求,监控终端应该预留一些接口供不同的传感器或者功能模块进行扩展使用,使系统功能更加灵活丰富;(5)易维护:系统进行模块化设计,便于系统进行安装和维护,同时易于后期的拆卸和回收。2.4系统关键技术2.4.13G通信网络(1)3G通讯标准分类无线传输技术近年来得到不断的发展,广泛应用的主要有蓝牙、WiFi、GSM/GPRS和3G等。蓝牙和WiFi等网络传输距离太短,无法进行远程传输。GSM/GPRS速率较低,无法达到传输高质量视频图像的需求。而3G网络传输速率较高,覆盖范围很广,能够较好的满足本课题的需求。因此,本课题选用3G作为传输网络。3G是指第三代移动通信技术,相对于第二代移动通信技术来说,它在传输速率上具有更快的速度,能够更好地传输视频图像等数据,是一种高速传输的蜂窝移动通信技术[4]。3G技术在静止的条件下能够达到下行2Mbit/s和上行384kbit/s的传输速度,在行车环境下能够达到144kbit/s,使手机实现全球无线漫游成为了可能。目前,国际电信联盟(ITU)确定了三种3G标准,分别是美版的CDMA2000、欧版的WCDMA以及中国版的TD-SCDMA,已经广泛被应用到手机商务、视频电话、手机电视和手机购物等多个领域。CDMA是基于码分技术(扩频技术)和多址技术的通信系统,采用频分双工的方式,具有话音质量高、容量大、覆盖较广等特点。CDMA2000是由美国高通公司提出的,采用多载波方式。CDMA2000可以与CDMA系统完美兼容,使用更为可靠,成熟度更高,为技术的延展性带来了好处。CDMA2000的多载传输方式在通信容量和品质上有较大提升,支持高速补充业务信道,支持软切换和更软切换。可采用发射分集方式OTD或STS,提高了信道的抗衰弱能力。但是相比于WCDMA,对频率资源有极大的浪费。TD-SCDMA(时分同步码分多址),是由中国提出的,被国际广泛认可的第三代移动通信标准,TD-SCDMA起步较晚,但在频谱利用率、对业务支持的多样性等方面仍具有很多独到的优点。TD-SCDMA由于采用时分双工,基站可以通过信号预测上行和下行通道特性,提高频谱利用率。通过使用智能天线技术,可以减少用户间的干扰。除此之外,TD-SCDMA具有设置上、下行数据时隙的7 比率功能,从而可以通过灵活调整该比例,使得上下行的数据利用率提高。但是TD-SCDMA由于时分双工本身的缺陷,在终端移动速度以及覆盖半径方面,频分双工要优于时分双工。同时,由于带宽较窄,容易出现扰码短少的问题,在网络速率、稳定性方面较差。WCDMA(宽带码分多址)标准是一种基于GSM网络的3G蜂窝网络技术,起源于欧洲和日本,由于GSM技术的广泛应用,在此基础上,WCDMA技术迅速发展,目前已占据全球80%运营商份额。目前存在R99、R00(现已改为R4、R5、R6)两个版本,主要使用卷积码和Turbo码进行信道编码,同样支持软切换和更软切换,可高速支持多媒体业务。同时,WCDMA能利用TSTD(时间切换发射分集)、STTD(时空编码发射分集)、FBTD(反馈发射分集)进行空间的接收和发射分集,有效的解决通信时的多径和衰落问题,使得系统的抗衰落能力和抗多径性增强。WCDMA支持FDD和TDD的复用模式,最新版本利用HSUPA技术,理论速率为下行14.4Mb/,上行5.76Mb/s,带宽5MHz,码片速率3.84Mcps,室内环境最低可达2Mbit/s,室外步行和行车环境分别可达384Kbit/s和144Kbit/s,是速度最快的3G标准[5]。(2)3G通讯标准选择三种3G通信标准基本参数如表2.1所示。表2.1三种3G通信标准基本参数CDMA2000TD-SCDMAWCDMA双工方式RTTFDDRTTTDDARTTFDD同步方式同步CDMA同步CDMA异步CDMA带宽1.25MHz1.6MHz5MHz码片速率1.2288Mcps1.28Mcps3.84Mcps由表2.1可以看出,WCDMA具有更快的传输速率,而且由于WCDMA是基于GSM而发展来的3G标准,所以它具有更好的兼容性,与另外两种3G标准相比,WCDMA具有以下优势:Ⅰ.码片速率更高,上网速度更快;Ⅱ.技术更加成熟,手机产品更加丰富;Ⅲ.信号覆盖率较高,通话质量好。因此本课题选用WCDMA进行视频数据的无线传输。2.4.2压缩编码技术本课题采用3G无线通讯技术对视频流数据进行远程传输,由于3G技术带宽有限,因此为了能够获得高质量的视频信息,减少视频流的传输数据量,需要对视频数据进行一定的编码和压缩吃力,进而提高传输效率。数字视频8 编码压缩技术,需要在遵循一定视觉效果的基础上,对所采集的图像数据进行变编码、压缩,减少冗余数据,降低图像传输的数据量,提高传输效率。也就是通过少量数据有损或无损的显示原数据中的像素矩阵。在进行视频处理压缩处理之前,首要工作便是对原始图像进行某种变换处理,在通过量化等过程,实现冗余视频的去除,最后进行熵编码器进行图像重建,继而完成视频数据的压缩。(1)视频编解码技术分类现阶段,视频编解码的技术主要包括MPEG-x和H.26x两种系列。前者编码标准主要应用在流媒体、广播电视等领域,其中主要有等;而由ITU组织制定的H.26x主要有几种标准,该系列标准的主要在保证高质量图像画质的前提下降低数据量,多用用在视频会议以及可视电话等实时性较强的视频通信领域中。JPEG标准国际上第一个图片压缩的标准。现广泛应用于互联网和数码相机领域,80%的网站都采用JPEG压缩标准,是目前最流行的图片压缩标准,JPEG具有鲜明的优点,它支持高级压缩,利用可变的压缩比控制文件大小,可以将图像储存在很小的空间,又能获得较高的图像重建质量。同样JPEG也有明显不足,由于JPEG标准是一种针对静止和连续运动的图像有损压缩格式,会使原始图片数据质量下降,因此并不满足高清的图片的传输需求。MPEG标准是ISO(国际标准化组织)针对运动图像和语音压缩专门制定的国际标准,MPEG优点主要有压缩比较高,使低码率的视频传输成为可能[23]。同时由于算法更为优化,因此压缩效率更高,图像质量较好,节省存储空间。缺点是频宽要求较高,有时会出现明显的高频失真。H.264是由国际标准化组织(ISO)和ITU共同提出的全世界最先进的视频压缩标准,具有视频高压缩比、良好的网络适应性以及高质量图像等优点,是新一代的数字视频压缩技术。它的基本系统源码开放,任何人都能够使用。与之前的标准相比,其具有优异的网络亲和能力和压缩性能,不再需要繁琐的设置,使多媒体技术得到广泛的应用。H.264视频压缩标准最初目的是提高图像质量。这种视频标准相对于上述标准所实现的图像压缩比更大,进而很大程度上降低了所需的带宽和通信的数据量,进而降低了用书使用中的下载时间。同时H.264标准并非在牺牲高质量图像的基础之上,相反其能够实现低带宽高图像质量的目的[6-8]。(2)视频编解码技术选择H.264标准将H.263标准的优势和MPEG系列编码标准的优点都继承了下来,在此基础之上,H.264标准采用了许多先进技术,如帧内预测、UVLC编码等。大大提高了视频数据的压缩效率。而且它还具有以下优势:Ⅰ.H.264视频压缩技术能够确保视频图像的清晰流畅;在同等图像质量的条件下,H.264的压缩比较高,是MPEG-2的两倍以上,9 是MPEG-4的1.5~2倍,由此增强了对各种传输信道的适应能力;Ⅱ.在同等图像质量的条件下,H.264的压缩比较高,是MPEG-2的两倍以上,是MPEG-4的1.5~2倍,由此增强了对各种传输信道的适应能力;Ⅲ.H.264能够满足在诸如互联网、2G、3G等各种网络中进行传输;Ⅳ.增强了差错复原能力,解决了在不稳定网络下传输容易发生的丢包问题[9]。H.264标准只是给出了视频比特流的句法,对于编解码器如何实现并没有给出明确的规定,使各厂商在实际设计中具有很大的灵活性,推动了各厂商间的良性竞争,从而促进行业技术的发展。H.264编码器主要采用的是变换和预测的混合编码模式,与较早的标准相类似,存在一些差异主要体现在各功能模块的细节上。通过帧内或帧间预测编码,以宏块为单位对Fn进行处理。如果是帧内预测,可以通过运动补偿当前序列已编码参考图像获得其预测值PRED。为了达到提升预测精度和提高压缩率的目的,可以在已经过编码解码重建和滤波的帧中来对实际参考图像进行选取。综上,编码器只有具备了重建图像的功能才能为预测提供参考图像。因此,将残差图像进行反量化和反变换,得到的Dn’与PRED相加,即可获得未经滤波的帧uFn’。由于编解码环路中会产生噪声,需设置一个环路滤波器来去除它,进而达到提升图像压缩的性能。滤波后会得到重建图像Fn’如图2.2所示图2.2H.264编码器同编码器一样,H.264也只是规定了一个经过编码的视频比特流的解码方法。在接收端NAL中输出一个比特流,该比特流已经压缩,再通过对其进行熵解码能得到一组变换系数X,利用反量化和反变换得到残差Dn’。从该比特流中解码出头信息,利用该头信息可以产生一个与原始预测块相同的PRED。在解码器中,将PRED与残差Dn’相加,将得到的uFn’进行滤波得到Fn’,就是所要输出的图像[10],如图2.3所示。10 图2.3H.264解码器2.4.3实时传输协议(1)UDP与TCP协议概述及选择在远程监控系统中,旨在满足实时监控需求,则需要进行传输通道的选择,在本系统设计中视频和数据信息为主要数据载体,当前应用最广泛的有TCP和UDP两种协议标准。TCP传输协议主要面向连接为主要应用特点,所具备的拥塞和重传控制机制难以满足当前数据实时传输要求;相比而言,UDP则主要面向应用,是位于用户数据协议中UDP之上的RTP协议,该协议不设有拥塞控制方法,且无法保证数据传输的可靠性。UDP是一种开放式系统,与其连接的OSI模型中的传输协议层,无连接属性,这与TCP协议类似主要用于数据包的处理,主要用途是对分组顺序无要求的数据传输中,应用层完成分组传输顺序进行控制,该层属于IP和上层协议的接口层,能够给用户提供不可靠的数据传输服务。因为UDP不属于连接性协议范畴,所以在数据处理方面速度较快,在同等数据量的前提下,资源开销较小。通常而言,在网络质量不高的应用环境中,所带来的数据包丢失情况较为严重。因此UDP协议通常用于普通数据以及音频视频数据传输过程中,对应用的影响较小[11]。在当前的应用中,通过数据和控制指令进行数据传输的主要协议方式为TCP,在进行音频、视频数据传输过程中多使用UDP协议。在本文监控系统中数据传输需求为视频图像数据,因此,本监控系统采用UDP协议进行实时数据的传输更为合适。(2)RTP与RTCP协议概述无线网络具有不稳定性,需要通过RTP/RTCP协议配合UDP使用才能满足视频监控的实时性和高质量图像。RTP在网络协议中并不是一个单独的网络层,而是应用层的一部分位于传输层和应用层之间。RTCP主要功能是提供服务质量反馈信息,这是RTP作为传输协议的部分功能,通俗来讲,RTP是一种数据传输协议,RTCP是一种控制协议[12]。11 Ⅰ.RTP协议。RTP是一种网络传输协议,主要针对音视频数据流,在流媒体系统和视频会议等领域应用广泛。固定报头和有效载荷共同构成RTP数据包。其中,报头又包括序列号、时戳、同步信源标识符和特约信源标识符等。报头格式如表2.2所示。表2.2RTP报头格式VPXCCMPT序列号时戳同步信源(SSRC)标识符特约信源(CSRC)标识符V:标示RTP版本,2位;P:填充标志,1位;X:扩展标志,1位,如果X=1,则有一个扩展报头在RTP报头后;CC:CSRC计数器,包括紧接在固定头后CSRC标识符个数,占4位;M:标记,标记解释由设置定义,1位;PT:有效载荷,7位,记录后面资料使用哪种Codec,receiver端找出相应的decoder解码出來;序列号:16位,接受者可以通过序列号来得知报文是否丢失;时戳:32位,时戳通过第一个八位组来选定采样时刻;同步信源(SSRC)标识符:占32位,是随机的,用于标识同步信源特约信源(CSRC)标识符:每个标识符占32位,可以有0~15个CSRC标识符[13]。想要完成视频数据的实时传输,仅靠RTP协议是不行的,还需要RTP控制协议配合RTCP一起使用。Ⅱ.RTCP协议。RTCP即传输控制协议,负责管理传输质量,它能够提供数据分发质量反馈信息,辅助RTP来使用。为流媒体数据的传输提供可靠的传输机制,并实现对阻塞和网络流量的控制功能。传输质量以及传输时效的保证,通过RTP是无法实现的,都需要靠RTCP协议来实现。因此将RTP和RTCP协议相结合使用,才能保证传输的高质量和高效率[14]。摄像头采集到视频图像数据后经过编码生成视频流,再转化成RTP数据包,根据远端控制中心反馈的控制信息生成RTCP包,利用UDP/IP将两个数据包再打包,然后通过3G无线网络发送至Internet。监控终端通过解析、过滤和调配收到的IP包,分离出RTP包和RTCP包,利用对应的分析器对其进行分析。12 2.4.4嵌入式操作系统嵌入式系统(EmbeddedSystem),是一种“完全嵌入受控器件内部,为特定应用而设计的专用微型机系统”。对其基本特点说明如下:(1)嵌入式系统是为特定应用设计的,嵌入式CPU与通用型的最大不同就是嵌入式CPU大多是为了特定用户群体而设计的,他通常都具有体积小、专用性强、实时性好、集成度高等特点。(2)嵌入式技术以半导体、计算机等技术为基础,将多种高新技术融合在一起,从而决定了它具有高度集成、日新月异等特点。(3)嵌入式系统分为底层硬件和上层软件两部分,须对其进行全面设计,要努力实现在有限的硅片面积上达到更好的性能,提高自身的竞争力。(4)嵌入式系统不能进行二次开发,需要搭建一套开发环境平台并使用相应工具对程序进行二次开发。(5)嵌入式系统伴随着众多产品的更新才具备升级的条件,因此嵌入式系统具有更长的生命周期[15]。从结构上对系统进行划分,嵌入式系统一般包括底层硬件和上层软件两个部分,如表2.3所示。表2.3嵌入式结构嵌入式硬件系统嵌入式软件系统其他支撑硬件应用软件外围接口电路操作系统核心处理器驱动程序由表2.3可知,嵌入式硬件部分由微处理控制器、外设接口、存储器等部分组成。本课题选用基于ARM11架构的微处理控制器,它既是构成嵌入式硬件部分的核心同时也是课题研究系统的控制中心。嵌入式软件部分包括操作系统软件和应用程序,有时会把这两种软件组合起来使用。嵌入式操作系统最早在航空航天工业崭露头角,伴随着这种系统的优势日益彰显,它已经被广泛应用于工业控制、军事设备、电信、交通、医疗等行业。目前市面上最常用的操作系统的有WindowsCE、Android和Linux。(1)WindowsCE操作系统WindowsCE打响了微软公司进军嵌入式、移动计算平台的第一响,它作为一款支持掌上电子设备的32位嵌入式操作系统,具有开放性、可升级等特点。其优势在于开发比较简单,软件扩展丰富。但其成本往往比较高。(2)Android操作系统Android是一个由Google公司和开放手机联盟联合研发的,主要应用于移动13 手机和掌上平台的操作系统,它是一款基于开放源代码Linux的操作系统。系统采用了软件堆层(softwarestack)的架构,主要分为:提供基本功能的Linux内核底层和众多公司开发的应用软件层,其中应用程序大部分是用Java语言开发的。(3)Linux操作系统嵌入式Linux操作系统以Linux为基础,开发人员可以免费获得其内核源代码并且支持随意传播,它是一款支持多用户、多任务、支持多线程和多CPU的操作系统,该系统软件移植性强、应用软件十分丰富、开发周期短新产品上市快。它以网络为核心,支持32位和64位硬件,是一个稳定的操作系统,作为嵌入式系统中的一个佼佼者,该操作系统具有以下几个显著特点:Ⅰ.模块化。Linux内核所具备的特殊模块机制可以方便用户根据实际需求对内核进行裁剪或添加某些模块,这使编译体积大幅减少以得到极为精简的内核,,这一突出特点可以使得嵌入式操作系统能够根据目标平台定时内核。本设计中摄像头驱动和3G上网卡驱动的配置和移植就得益于此。Ⅱ.开发成本低。Linux操作系统的源代码全部开放,所以任何人皆可以自由取得Linux,开发人员都可以建立Linux开源项目和软件,同时修改系统错误以提升性能,因此我们可以方便获取到优秀的开源项目,大幅降低开发成本。Ⅲ.多任务能力强。Linux具有的任务调度和内存管理技术为其多任务的实现提供了基础。Linux包含常用的办公软件、多媒体播放器以及众多软件,这就需要Linux具备同时处理多个任务的能力,实现微处理核心对各个任务平均等访问。Ⅳ.系统安全可靠。Linux内核提供了极为有保障的安全机制,使Linux系统对各式各样的病毒都具备免疫能力。同时利用Linux自带防火墙、入侵检测和安全认证等工具,可以随时修补系统的漏洞,这充分提高了Linux系统的安全性和可靠性[16-17]。综合以上三种操作系统的优缺点,本课题采用嵌入式Linux操作系统作为嵌入式开发板的操作系统。14 第三章系统硬件总体设计本系统硬件平台主要包括ARM11开发板、CMOS摄像头、3G模块、热释电传感器(PIR)模块以及电源模块等。图3.1为系统硬件框图。时钟复位摄像头模块3G模块S3C6410电源模块PIR模块NANDFLASHSDRAM图3.1系统硬件框图3.1处理器模块ARM11选用的是飞凌公司生产的OK6410开发板,该开发板以S3C6410为主控芯片,支持对H.263/H.264/MPEG等多种格式的视频图像进行编码/解码,拥有强大的视频处理能力,已经被广泛应用于移动电话和通用处理等领域。S3C6410为16/32位RISC处理器,采用ARMv6指令集,内置有音视频处理、3D加速等硬件加速器,为3G通信业务提供了硬件基础。而且还包含有多格式编解码器(MFC),能够进行H.264/MPEG-4的编解码。具有成本低、功耗低、性能高等特点。OK6410开发板运行主频为533MHz/667MHz,支持NANDFlash启动。开发板接口丰富,能够实现摄像头、以太网、液晶屏等模块的连接。OK6410提供了一个12M的USBHOST接口,可以用来连接USB摄像头、3G上网模块等,并且支持通用的USBHUB扩展,同时满足鼠标、U盘等设备的使用。本课题的摄像头与3G模块就是利用USBHOST接口及USBHUB扩展与开发板进行连接[18-19]。开发板如图3.2所示:15 图3.2S3C6410核心板3.2视频采集模块目前,市场上份额较大的数字摄像头主要有两种,分别为CMOS和CCD摄像头,CCD摄像头主要是集成在半导体单晶材料上,单位成像的效果较好。颜色还原和分辨率比CMOS摄像头要高,但是制造工艺较复杂,价格相对昂贵。一般说来,CCD图像传感器常常应用在对图像质量要求较高的高端技术领域中,比如专业级摄影机、军用器材等等。CMOS摄像头虽然在成像质量和色彩还原度方面与CCD有一定差距,但事实上经过技术改造,CMOS和CCD的实际效果差距已经减少了不小,而且前者的价格和功耗相对较低。在表3.1中给出了CCD与CMOS图像传感器在成本、功耗、集成度等性能方面的比较。表3.1CCD与CMOS图像传感器性能对比CCDCMOS集成度较低较高信噪比优秀良好功耗较大较小成本较高较低体积较大较小从表3.1不难看出,CMOS在功耗、成本、集成度等方面具有很大优势,考虑到本系统要在野外环境中工作,对功耗和成本要求较高,在集成度和体积方面16 也有要求。因此,CMOS摄像头更加符合本课题的实际需要。基于此,本课题最终选用ZC301摄像头。该摄像头具备图像传感器、数模转换模块、DSP芯片以及视频数据压缩模块等。其中数模转换模块提供对大容量模拟信号向小容量数字信号的转换功能,借助DSP芯片实现数据的压缩,进而利于JPEG格式的数据传输。该摄像头的性能介绍如下:(1)采用最经典稳定的中芯微301P方案,色彩逼真;(2)采用高品质不变形镜片,真实还原色彩,图像更加清晰;(3)快速压缩引擎,2至8倍压缩比。3.33G通讯模块本系统设计通讯模块是WCDMA的USB3G无线通信网卡(华为E261)。改无线网卡能够支持联通WCDMA网络,提供十分便利的无线上网功能;网卡上行速率最高达到5.76Mbps,下行速率最快达到7.2Mbps,由此可见数据传输速度十分迅速,改网卡同时兼容2GGPRS以及GSM网络制式;天线集成在网卡中,体积较小。3.4热释电红外传感器模块由于视频采集数据量往往比较大,在数据存储和传输中要考虑制作成本和运营费用,达到减少流量消耗、节约成本的目的。因此,本课题利用热释电红外传感器感知人体,当人体触发感应器时,监控前端才启动摄像头进行图像采集和传输。红外线本质而言属于一种电磁波,波长范围在0.7μm到1000μm之间。红外线在传播过程中遵循物理学中的电磁波定理,如折射定理等。红外线的不同波长可以分为以下几个波段:0.75μm~3μm近红外、3um~6um中红外、6um~15um中远红外、15um~1000um远红外。任何具有温度的物体均会向外辐射红外线,因此任何物体在红外光谱上都是属于可见的[20]。热释电红外传感器简称PIR,工作原理为热电效应。主要有传感测元、干涉滤光片以及相应的场效应管(FET)组成。传感探测元能够感知人身体所辐射出的红外线,信号通过放大器进行放大,当该值高于设定的阈值之后,则FET输出[21]高电平,处理器收到高电平触发信号之后便开启摄像头,进行图像采集工作。热释电红外传感器在感知物体红外辐射之后,热释电材料能够将红外辐射信号转变为形影的电信号。通常条件下,每个传感器中均设置两个探测元件,通过反向串联的方式进行物理连接,当目标信号达到阈值之后,因为二者极性是相反17 的,则输出信号相互抵消,采用这种设计能够降低温度对探测器的影响。不过这种反向物理连接方式也一定程度上限制了传感器的感应方向,因此,当目标同传感器对向运动时,传感器将不会产生信号输出。菲涅尔透镜能够将红外信号聚焦,同时形成明暗交替的区域,使用PIR的时候,通常在传感器前端添加菲涅尔透镜,并加装在红外探测器的前方,进而提升传感器的探测距离[21]。下图3.3为市场上常见的传感器。图3.3热释电红外传感器菲涅尔透镜与人们广泛使用的眼镜类似,能够提升红外传感器所能感知的距离,进而使得传感器的探测范围扩大。菲涅尔透镜由于有毒不均匀、同心度不同等特点,能够在红外传感器探测区域形成诸多明暗交替的区域,使得探测对象能够穿越非光敏、光敏区域,即感应信号以脉冲形式输出。借助该检测模式,能够较传统的检测模式检测能力有很大提升。本课题选用HC-SR501型红外感应模块,该模块工作电压为3.3V-20V,具有灵敏度高、可靠性强等优点,工作电压较低,在自感设备领域应用广泛。该模块特点是全自动感应,当模块感应到人体时输出高电平,目标离开后输出低电平。同时该模块具有两种触发方式:不可重复触发和可重复触发。为了更好地实现野外视频监控的目的,选择后者为触发方式,即当感应范围内一直能感应到目标物[22]体时,将一直输出高电平,当目标物体离开后才延时输出低电平。如图3.4所示,HC-SR501外接示意图。图3.4HC-SR501外接示意图18 2为输出,L和H分别为不可重复及可重复触发端口。HC-SR501与ARM开发板同样通过GPIO口连接,如图3.5所示,GPIO接口。图3.5GPIO接口ARM板通过GPG13口采集HC-SR501模块输出信号。3.5电源模块太阳能供电模块主要是对野外作业的考虑,太阳能作为新兴可在生清洁能源,在野外工作领域得到了广泛应用。太阳能供电系统具备环保节能、使用方便等多种特点。本设计中使用太阳能电池板、电池以及电源控制部分共同组成太阳能电源控制系统,太阳能电源控制系统而记住芯片完成对太阳能电池板的控制,蓄电池采用高效稳定的电池,能够延长蓄电池寿命,进而保证对通信模块、嵌入式平台能够提供高效、稳定的供电。在选择太阳能供电系统时需要针对实际的应用需求进行选择,即可靠的太阳能电池板和匹配的蓄电池容量,防止在阴雨天情况下蓄电池供电不足的问题出现,同时还要注意成本的开销,不能过分追求太阳能电池板的性能。在进行太阳能供电系统设计环节中,首选需要确定的是供电功耗需求。例如:负载电压、电流、功率以及工作时长等。假如负载功率为F,系统连续工作时长为T,则改负载每天所消耗的功耗Q=F×T。明确总功耗Q之后,便可按照下式进行太阳能电池板容量以及蓄电池容量的计算。(1)太阳能电池板容量的计算W×ChP=(3.1)wS×η×η×η×η×ηd12345(2)蓄电池容量的计算19 W×RhdC=(3.2)a()V×D×1−C×Csh式中:Pw为电池板功率;Ca表示蓄电池容量;Wh-平均每天放电量;Sd-峰值日照时长;Rd-阴雨天数;η1-组装损失因子≈0.97;η2-温度损失因=0.95;η3-灰尘遮蔽损失因子=0.93;η4-充放电损失因子=0.80;η5-输配电损失因子=0.95;C为容量系数,范围1.1~1.5。常用太阳能供电系统而言,蓄电池多使用铅酸蓄电池,标称电压(V)通常是12V,放电深度(D)控制在30%~80%范围,自放电率(C[23]s)低于5%,充放电效率(Ch)值为0.8。20 第四章嵌入式Linux系统的建立4.1开发平台搭建4.1.1建立交叉编译工具编译程序在两种不同的计算机环境中都能够进行编译,那么就称这种编译器可以支持交叉编译,该过程也就是我们所说的交叉编译过程。例如虽然X86CPU和ARMCPU两个平台用的都是Linux系统,但不同的架构之间的机器码不同,这时就需要应用交叉编译工具来实现在X86架构下编译和在ARM架构上执行。本设计使用的是arm-linux-gcc是基于arm架构的linux平台交叉编译工具,这里采用arm-linux-gcc-4.4.3版本,具体安装步骤如下:(1)下载arm-linux-gcc-4.4.3.tar.gz文件,并将其移动到PC机Linux系统内,然后对该压缩包进行解压,在终端输入“sudotarxvzfarm-linux-gcc-4.4.3.tar.gz-C/”将其解压到/usr/local/arm目录下。(2)在终端输入“gedit/etc/.bashrc”对该文件进行编辑修改交叉编译器的路径。#sudogedit/etc/profile.在最后加上“exportPATH=$PATH:/usr/local/arm/4.4.3/bin”,设置环境变量,保存关闭。(3)用root账号重新登录系统(使刚刚添加的环境变量生效)。打开终端输入“arm-linux-gcc-v”命令进行查看arm-linux-gcc版本号,如果安装成功则表示交叉编译环境搭建成功。如图4.1所示。图4.1arm-linux-gcc-4.4.3安装完成21 4.1.2Uboot的烧写ARM开发板是依赖bootloader启动的,BootLoader是操作系统上电后进行初始化的小程序,用来告诉系统从哪里开始启动或加载程序。但不同体系结构和硬件配置的开发平台适用的bootloader也不同。但是随着编程技术的不断发展,可以同时支持MIPS、ARM、x86、XScale、NIOS等多种体系结果的bootloader已经出现了[24]。嵌入式Linux的bootloader最常用的是U-Boot,U-Boot在两个阶段的启动过程如图4.2所示:图4.2U-boot启动过程U-Boot编译步骤:(1)下载源码u-boot-2010.03.tar.bz2,将其拷贝到PC机的Linux系统中,并对其进行解压,解压命令为“tarxjvfu-boot-2010.03.tar.bz2”;(2)指定交叉编译工具,找到“CROSS_COMPILE?=”在等号后面添加arm-linux-。(3)测试编译新建的项目;执行#make命令。之后会生成一个u-boot.bin文件,这就是需要移植的Bootloader。4.1.3内核移植Kernel作为一个硬件基础上第一层软件的扩充,为操作系统的运行提供着系22 统进程、内存、设备驱动和中断处理等最基本的功能,因此kernel必须常驻内存,且尽可能的小。通过kernel代码源码及其启动信息可以读出各功能启动过程,如图4.3所示为kernel的启动流程。图4.3kernel启动流程下载源码包,在宿主机环境下解压tarxvfjlinux-2.6.30.4.tar.bz2,这里为了减少庞大的工作量,借用开发板的配置文件来进行更有针对性的剪裁配置。通过指令makedistclean清除源码包中的无用的配置文件,然后开启针对ARM平台的kernel配置的菜单模式makemenuconfigARCH=arm,载入开发板的配置文件,然后保存以生成默认的.config文件,即可对内部各种功能模块进行剪23 裁。如图4.4所示,配置文件的载入和保存。图4.4配置文件的载入和保存在应用make编译kernel时,若遇到“Unabletofindthencurseslibraries…...”的提示错误,由提示知道需要安装ncurses库。Ncurses被定为动态库,主要完成定义功能键、绘制屏幕和基于文本终端的图形互动等。用指令sudoapt-getinstalllibncurses5-dev完成安装后可以解决此问题。剪裁kernel时需要注意kernel中对flash的分区及BootLoader传递给kernel的机器参数须和实际情况一致,kernel中定义的机器ID必须和BootLoader中的定义一致。4.1.4根文件系统制作主要用到busybox和mkyaffs2image两个工具包。Busybox集合UNIX众多命令于一身,用于嵌入式系统关键目录和文件的生成管理。不同于针对NorFlash启动的JFFS文件系统,YAFFS是针对以NANDFlash为存储器启动的文件系统。为了适应大存储的NANDFlash,YAFFS从最初的yaffs扩展到了yaffs2版本。将busybox的压缩包共享至宿主机环境下,解压后首先配置Makefile文件,主要是支持平台和交叉编译工具的选择CROSS_COMPILE?=arm-linux-,ARCH?=arm,这一步也可以在稍后的编译菜单里面修改。通过指令makemenuconfig进入busybox的菜单配置模式,如图4.5所示,busybox的配置菜单。图4.5busybox的配置菜单进入busybox的设置选项,选上BusyboxLibraryTuning下Fancyshellprompts,配置profile文件中命令提示符生效;同样在Busyboxsetting内再选上BuildOption下的静态编译;在该选项下方有交叉编译工具的选择;选上Init24 Utilities下的Supportreadinganinittabfile可以使busybox的init进程解析/etc目录下的inittab文件;保存退出。建立一个rootfs文件夹mkdirrootfs,用指令make编译配置好的busybox,并安装在该rootfs文件夹下makeCONFIG_PREFIX=/root/rootfsinstall,如图4.6所示,busybox安装完成。图4.6busybox安装完成同时在/rootfs内,生成了/bin、/sbin、/usr、/linuxrc4个目录,接下来在rootfs目录内建立文件夹dev、etc、home、lib、mnt、opt、proc、root、sddisk、sys、tmp、udisk、var、web,同时还需要在4个目录中的usr下建立lib和share文件夹。/etc目录下的众多配置文件通常是通用的,可以借鉴相关板子的目录做适当修改,另一个比较关键的目录是/dev,该目录下创建设备节点文件,因为负责提供设备节点文件的mdev须通过init进程启动,而在mdev构造/dev前,init至少需要console和null的设备文件mknodconsolec51,mknodnullc13。进到上文的Kernel目录下。因为在生成uImage时并没有做module的相关编译,需要在这里完成。进入目录后,编译内核模块makemodulesARCH=armCROSS_COMPILE=arm-linux-,将内核模块安装到文件系统中makemodules_installARCH=armINSTALL_MOD_PATH=/root/rootfs,然后会在/rootfs/lib/modules下得到一个内核模块的文件夹。之后使用mkyaffs2image工具制作文件系统镜像YAFFS。下载mkyaffs2image的源码包找到utils文件夹,make安装。将生成的mkyaffs2image文件拷贝到/usr/bin目录下并更改该文件的权限chmod777/usr/bin/mkyaffs2image。之后可以用该工具将rootfs文件夹制作成yaffs2镜像文件./mkyaffs2imagerootfs/root.bin。完成镜像文件在开发板上可能会有用户应用程序启动时无法找到的现象,直接原因是没有库文件,或者是kernel的编译和YAFFS的编译所使用的交叉编译工具不同。所以必须保证Kernel和YAFFS的编译工具的版本一致性,且启动开发板后将工具链中的armlinuxgccdir/arm-none-linux-gnueabi/lib中的库文件放到开发板/lib目录下。同时在裁剪kernel时,必须根据所采用的根文件系统类型配置kernel对该类型的支持,本系统kernel须支持YAFFS,否则会有不能启动现象[25-26]。25 26 第五章视频监控终端软件设计5.1系统工作流程当有目标触发系统红外传感器时,系统打开摄像头进行图像的采集,在嵌入式Linux系统构建完毕后,需要对无线视频监控终端的应用软件进行设计,在本章中主要需要完成如下内容:(1)实现基于V4L2的视频图像采集和红外感应信号采集;(2)将采集到的视频数据以H.264标准对其进行压缩与编码;(3)设计OSI各层传输协议,将视频数据通过WCDMA3G无线网络传输至服务器。具体工作流程如图5.1所示:图5.1系统工作流程图27 5.2视频采集5.2.1红外传感器对于红外感应模块,首先需要一段延时程序,设置5s延时。然后使ARM板不间断检测GPG13口电平信号即可。HC-SR501在开启之初需要大概一分钟的初始化时间,之后将正常输出。当检测到高电平后调用延时程序,延时结束后,由可重复触发方式恢复低电平。鉴于本监控系统需同时传输视频图像和红外感应情况,为了便于进程间Socket通信机制的良好实现,在数据采集进程中使用多线程分别完成视频图像和红外信号的传输。Linux下多线程使用POSIX接口,即pthread。在该系统下实现多线程时要添加pthread.h,所需库为libpthread.a。建立子线程task1负责红外感应信号的采集,task2为视频图像的采集。这些子线程都是循环执行的,不需等待执行完成再回归主线程,设置属性为分离结构PTHREAD_CREATE_DETACHED。void*thread_infrare(void*arg)void*thread_video(void*arg)main(){……pthread_attr_init();//初始化线程属性pthread_attr_setdetachstate(&attr,PTHREAD_CREAT_DETACHED);//分离式……pthread_create();}5.2.2摄像头驱动移植Linux内核自身兼容ZC301摄像头,因此只需要在进行内核编译时调用该摄像头驱动即可。如下所示:DeviceDrivers---><*>Mutlmediasupport--->[*]Videocaptureadapters--->[*]V4LUSBdevices---><*>GSPCAbasewebcams---><*>ZC3XXUSBCameraDriver28 配置界面如图5.2所示:图5.2USB摄像头内核配置点击上述选项之后,系统推出配置页面,随后执行makeZImage命令则可对内核进行新编译,内核中自身兼容ZC301摄像头驱动,开启之后将摄像头安装至USB集线器,便可看到下图5.3所示信息:图5.3ZC301摄像头插入之后打印信息由上图可以看到系统已经识别该摄像头的型号,并为其分配一个识别设备号“/dev/video2”,可以通过这个设备号对摄像头进行操作。5.2.2视频图像的采集V4L(VideoforLinux)从2.1.x版本以上便集成到Lunix内核中,V4L是Linux内核中给予用户可用的视频应用程序接口(API)。V4L2则是V4L的新一代升级版本,从2.5.x版本便集成到Lunix内核中,来替换之前的V4L。V4L2是UVC的USB接口用于视频设备的免驱动编程框架,主要用途是USB摄像头进行视频采集。在完成将视频设备和音频频频频频程序移植到Lunix系统后,用户便可以使用调用的方式将V4L中的API进行调用,进而实现对音频和视频设备的控制。29 在本系统设计中,需要使用摄像头对视频数据进行采集,因此需要在Lunix内核中调用V4L模块[27-28],具体配置过程见下图5.4所示。图5.4V4L配置Lunix内核具体配置过程:,完成内核编译之后,系统便能够对V4L框架进行支持。ZC301摄像头按照/dev/video0路径存放于系统中,用户通过通过该文件的控制便可以实施对视频采集设备的控制。V4L2具体工作流程见图5.5所示:图5.5V4L2工作流程图30 V4L2具体工作流程如下:(1)开启视频设备。就Lunix操作系统而言,控制摄像头的相关操作和普通数据控制操作类似,可以使用Camera_open()函数控制摄像头的开启。命令为开启摄像头,当完成调用之后,系统命令行则会返回文件标示符,调用失败则返回-1。因此可以通过判断返回值,确定函数是否成功调用,即通过返回值确定摄像头是否已经成功开启。(2)设置视频采集格式。通过执行控制函数ioctl()参数中的VIDIO_CFMT便可以对系统中的视频格式进行控制,其中参数V4l2——fmt则是V4L2框架中v412_format的一个结构体,供用户对视频采集的分辨率进行格式设置和格式控制,对V4l22_fmt参数修改赋值便可对视频采集格式进行修改。最后将摄像头的视频输出格式设定为YUV,默认大小为320*240,设置帧率为15fps。(3)申请帧缓存区。函数ioctl()参数中的VIDIOC_REQBUFS是用以申请视频帧缓存路径,req参数则是V4L2框架中内置的V4l2_requestbuffers的结构体,将req参数中的count变量赋值为15,type参数变量赋值为,将memory变量参数设定为,以此便能申请15帧缓存区域。(4)建立内存映射。mmap()函数供用户建立内存映射建立,在调用该函数之前,需要将摄像头的缓存进行清除,随后需要将视频采集数据映射至选择的内存区,之后应用程序便能直接对映射的内存位置进行访问,最后获得视频文件的相关信息。获取内核中视频的物理地址。char*camera_data=(char*)mmap(0,camera_buff.size,PROT_READ|PROT_WRITE,MAP_SHARED,camera_fd,0);//将获取的物理地址映射至内存区。(5)把申请到的帧缓冲全部加入一个队列中。使用主函数将采集的视频数据进行存储。(6)采集的视频。完成内存映射建立之后,设备文件便完成了到内存路径的映射,此后系统便可以对图像进行访问和相关操作,该过程需要使用读操作子函数,调用之后摄像头便可以进行图像的采集,图像采集工作时通过调用iotl()函数实现的。开始采集视频(7)旨在得到采集的视频数据,将存储的视频帧冲出队列,获取最初的视频数据信息,需要调用函数完成,执行之后将缓冲数据存储至结构体req_buf中。(8)为了满足视频循环采集目的,需要将帧缓存再次调至队尾,可以调用函数实现,执行之后帧缓冲则调至队尾。31 (9)结束采集,关闭数据采集。对于嵌入式设备而言,系统需要进行剪裁,硬件外设相应的专用性特点较强,这就使得系统资源智能满足最初的功能需求。因此在结束录像工作之后,需要将缓存清除,即清除内存映射,该过程需要调用camera_close函数完成,即关闭摄像头.5.2.3SD卡存储设备SD存储卡属于Flash存储卡的一种,最初的设计目的是支持现阶段多媒体设备对于存储数据安全性、容量、使用环境的需求。SD卡是在MMC存储器的基础上研发而来,具备一些新特性:数据高安全性,能够设定使用权限,避免非法数据复制操作;传输速度快,是传统MMC卡的5倍。同时SD卡封装的引脚、尺寸以及数据传输协议皆向下兼容MMC。提供9个封装引脚:其中涵盖3个电源引脚、4个数据传输引脚、1个命令引脚以及1个时钟端输入引脚。SD卡存储设备支持两种通信协议,SD和SPI,本系统中选择SPI总线协议。这就需要使用过程中进行相应的配置,具体方法和指令见图5.6所示。图5.6配置SD卡DeviceDrivers---><*>MMC/SD/SDIOcardsupport---><*>MMCblockdevicedriverNumberofminorsperblockdevice(NEW)[*]Usebouncebufferforsimplehosts经过以上配置,编译后内核就可以支持挂载SD存储卡了。5.3H.264编码本系统选用最常见的X.264开源编码器,它以H.264技术为基础,是H.264的变种版本,因此能够完美兼容H.264码流,并且支持Linux、windows等操作32 系统,得到开发人员的广泛应用。首先通过指令“./configure--disable-asm”获取config.mak等一系列文件。然后使用vim编辑器修改文件config.mak。修改配置如下:ARCH=ARMSYS=LINUXCC=arm-linux-gccCFLAGS=-Wshadow-O3-ffast-math-Wall-I.-I$(SRCPATH)-std=gnu99-fomit-frame-pointer-fno-tree-vectorizeDEPMM=-MM-g0DEPMT=-MTLD=arm-linux-gcc-oLDFLAGS=-lm-lpthreadLIBX264=libx264.aAR=arrcRANLIB=ranlibSTRIP=stripAS=ASFLAGS=-O2-felf-DHIGH_BIT_DEPTH=0-DBIT_DEPTH=8RC=RCFLAGS=EXE=HAVE_GETOPT_LONG=1DEVNULL=/dev/nullPROF_GEN_CC=-fprofile-generatePROF_GEN_LD=-fprofile-generatePROF_USE_CC=-fprofile-usePROF_USE_LD=-fprofile-usedefault:cliinstall:install-cliLDFLAGSCLI=CLI_LIBX264=$(LIBX264)最后可以通过执行“makeinstall”命令编译安装make。V4L2采集视频图像的格式有YUV420和YUV422的区分,两者同样采取隔行扫描时,序列会有区别,YUV420序列为YYYY、YYYY、UVUV,而YUV422的序列为YU、YV、YU、YV。本系统采集的图像格式为YUV422。33 编码器移植后就可以进行视频流的编码了,H.264编码具体流程如图5.7所示。(1)创建并初始化H.264编码结构,设定编码器参数x264_param_default(),parse()初始化编码器。(2)获取待编码视频的输入地址,通过getopt_long()得到入口地址向量与方式选择,getopt_internal()解析入口地址向量。(3)视频数据输入后开始进行编码,使用x264_encoder_encode()函数对视频帧编码。(4)编码完成输出已编码文件并检测是否存在需要编码的视频帧,如果存在就进行循环处理,否则结束编码进程。图5.7H.264编码流程图34 5.4实时数据传输摄像头完成图像采集之后,系统便进入编码压缩阶段,之后便是压缩文件的无线数据传输。压缩之后的视频数据传输则需要经过OSI协议的物理层、数据链路层、网络层、传输层、应用层传输数据至3G模块中,再通过3G模块的无线电波发出。系统中使用AT指令将3G网卡进行参数设置,并拨号连接值Internet。视频监控终端对压缩之后的数据进行打包,数据路经USB到达WCDMA传输模块,随后将以无线电波的方式发送至服务器。视频文件传输过程见图5.8所示。采集终端监控主机应用程序监控端图像数据图像数据UDP协议UDP协议IP包IP包PPP协议监控主机网卡PPP包串口驱动Internet网络WCDMA模块WCDMA网络图5.8WCDMA网络传输过程5.4.1视频流的RTP封装RTP并未在协议中作为单独的网络层进行设计,仅仅是通过应用层来完成的设计。RTP位于应用程序和传输层之间,在应用层中将完成压缩编码的视频以RTP协议进行打包[29]。RTP数据包将在传输层中再次封装成UDP数据包,然后向下传输并被封装成IP数据包。最终经由数据链路层完成数据包的网络数据传输[30-31],具体参见下图5.9所示。35 图5.9RTP/UDP/IP封装方式在本系统中无线传输设计中,使用RFC3984载荷协议,采用单一NAL封包以及分片封包的方式对数据进行打包处理。当传输单元大小未超过最大传输单元时,采用单一封包模式;当传输单元超过最大传输单元时,采取分片封包模式。一般地,以太网的最大传输单元(MTU)为1500字节,数据经过PPP协议封包后为1450字节,其长度应该减去IP报头(20字节)、UDP报头(8字节)、RTP报头(12字节)。即1450-20-8-12=1410字节,所以要将单片封包最大长度(NALU)定为1400字节[32-33]。RTP封包流程图如图5.10所示。36 图5.10RTP封包流程图5.4.2RTP包的网络传输网络中进程间的双向通信依靠Socket来完成,进程向网络发出的请求或对网络请求的应答都通过Socket实现。Socket是位于应用层和传输层之间的一个抽象层,能够将UDP/IP层繁杂的操作抽象为简单明了的API接口以便供应用层调用,最终实现进程在网络中通信[34]。UDP是面向无连接的运输层协议,不会引入建立连接的时延。UDP不维护连接状态,提供的服务相对较少,只提供多路分解和多路复用和校验功能,不需要跟踪接收和发送缓存、拥塞控制参数、序号与确认序号等参数。UDP使用的是数据报套接字,由类型SOCK_DGRAM指定,其数据交互如图5.11所示,Socket中UDP数据交互图。图5.11Socket中UDP数据交互图Server端流程基本为:程序初始化、填写本机地址信息、绑定端口、接收Client数据报、通信结束断开连接;Client流程与Server差别不大:程序初始化、填写Server地址信息、连接Server、与Server通信、通信结束断开连接。对于传输部分的关键代码需首先获取接收端地址及端口号:destip=inet_addr(argv[1]);if(destip==INADDR_NONE){printf("BadIPaddressspecified. ");return-1;}destip=ntohl(destip);destport=atoi(argv[2]);status=sess.AddDestination(destip,destport);37 可以添加一个client:RTPIPv4Addressaddr(destip,destport);status=sess.AddDestination(addr);checkerror(status);设置时间戳是RTP会话初始化过程重要一步,单位为s,使用RTP会话传输10Hz的采样数据时,时戳每秒递增10,时戳单元对应设置为1/10:sessparams.SetOwnTimestampUnit(1.0/10.0);之后可以调取RTPSession类下的SendPacket(),向所设定地址传输所压制的数据。SendPacket()是一个重载函数,其最典型的使用方法如下:status=sess.SendPacket((void*)"1234567890",10,0,false,10);checkerror(status);该语句中首个参数为待发数据,次位参数为该待发数据的长度,之后各参数则为RTP负载类型、标识和时戳增量。对于系统接收端,起始须要调用RTPSession类所提供PollData()来接收数据,该数据为发送端的RTP或RTCP数据报。在本系统的接收端RTP会话中有多个数据采集端作为发送源,常采用调取RTPSession类下GotoFirstSource()和GotoNextSource()方法来检测全部的数据源。当接收端在该RTP会话中查测出有效发送源数据后,接着调取RTPSession类提供的GetNextPacket()方法从该发送源中提出RTP数据报。sess.SetReceiveMode(RECEIVEMODE_ACCEPTSOME);sess.AddToAcceptList(remoteIP,allports,portbase);//设置接收模式status=sess.PollData();//接受RTP数据if(sess.GotoFirstSourceWithData()){do{RTPPacket*packet;//检索RTP数据源while((packet=sess.GetNextPacket())!=NULL){printf("Gotpacket! ");//获取RTP数据报。}}}38 5.53G无线通信的实现5.5.1驱动移植因为系统的无线上网卡与开发板之间是通过USB连接,而对于普通的USB设备,开发板通常是以存储设备的模式进行初始化和访问的,接口的通信并不会涉及网络通信。为使开发板将USB模块识别为一个无线的上网卡模块,将USB模块工作模式从存储模式转至modem模式,而这一模式的实现需要得到开发板在kernel上的支持。通过makemenuconfigARCH=arm指令打开kernel剪裁菜单,进入设备驱动选项,找到该选项下的USB支持,进入,会看到USB转串口的驱动支持,将这一选项编入kernel并进入。可以看到该菜单下有众多基于USB转串口的功能驱动,找到移动无线上网的USB驱动支持,编入kernel并保存。如图5.12所示,USB移动网卡驱动。图5.12USB移动网卡驱动5.5.23G网卡配置完成驱动移植之后,Lunix已经支持E261USB3G无线网卡。不过此时系统还无法进行3G拨号联网,这就需要使用usb-modeswitch工具,改工具编译过程需要先链接至libusb库。首先需要进行libusb-0.1.12.tar.gz和usb-modeswitch-1.2.4.tar.bz2软件包的下载,对吼针对ARM嵌入式平台实现移植。具体步骤参见下文:(1)编译安装libusb库。将libusb-0.1.12.tar.gz解压到虚拟机Fedora14的/home/James/USB3GDriver目录下,染后讲入解压后的目录执行:#mkdirinstall39 #./configure--build=i686-linux-host=arm-linux--prefix=$PWD/install#make#make-ninstall#makeinstall至此,libusb编译完毕。(2)移植usb-modeswitch工具。首先需要在虚拟机Fedora14中将工具进行解压到任意目录。在使用vim编辑器将配置文件进行添加退出:DefaultVendor=Ox12d1DefaultProduct=Ox140CTargetVendor=Ox12d1TargetProductList="1436,1001,1406,1412,140b,140c,141b,14ac"CheckSuccess=30然后,修改Makefile文件,将编译器修改为交叉编译器,并链接到上一步中编译生成的libusb库。修改文件中的CC=gcc为CC=/opt/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc。添加INCLUDEDIR-/home/James/USB3GDriver/libusb-0.1.12/install/includeLIBDIR-/home/James/USB3GDriver/libusb-0.1.12/install/lib将以下语句:$(PROG):$(OBJS)usbmodeswitch.h$(CC)-。$(PROG>$(oBJS>$(cFLAGS>$(LIBS>$(LDFLAGS>修改为:$(PROG):$(OBJS)usb_modeswitch.h$(CC)-I$(INCLUDEDIR)-L$(LIBDIR)-。$(PROG)$(OBJS)$(CFLAGS)$(LIBS)$(LDFLAGS)-static然后,执行再Fedoral4终端“make”命令进行编译。编译完成后会生成usb-modeswitch文件。(3)文件移植开发板根目录下。然后将usbswitchmode转移到/system/bin目录下,修改权限至可读写和执行,随后将usb-switchmode.conf文件复制到目录//etc/之下。(4)在开发板的终端下执行:#usbmodeswitch-W-c/etc/usbmodeswitch.conf然后在开发平台的终端下执行“pppdcallwcdma&”拨号命令,进行3G网络拨号,此时就可以连接3G网络了。(5)3G网络连接是本系统中数据传输的基础,在执行过程中需要进行连接的建立,方可实现视频数据的传输,因此将拨号命令添加到开机自启动脚本中,40 只要Lunix开机便直接启动。具体脚本文件如步骤4所示,随后修改脚本至根目录中,便可完成开机自动拨号工作。在开机主机Fedoral4目录中键入touchdialup_E261命令,新建一个脚本文件需要将下文添加到文件中:#!/bin/shusbmodeswitch-W-c/etc/usbmodeswitch.confsleep3spppdcallwcdma&将此脚本文件移至开发板//etc/rc.d/init.d目录下。然后修改//etc/init.d/rcS文件,在其中添加语句:/etc/rc.d/init.d/dialup_E261startecho"Startingconnecting3G.?>/dev/ttyl在开机前确保己经插入华为E2613G网卡,然后系统就可以开机自动连接3G网络了。5.5.3彩信报警将3G模块通过USB接口与嵌入式开发板连接,假如已经对内核中支持3G模块的驱动加载正确,则3G模块总将会在根目录中的/dev文件夹下生成5个虚拟串口,即;本文使用ttyUSB2节点来完成AT指令与不同模块间的交互,完成彩信的发送。执行虚拟串口的操作与其它普通串口类似,需要将串口波特率设置为,选择数据位,最后将奇偶校验位关闭;3G彩信模块内部带有封装好的MMS协议,因此可以釆用简单的AT指令将开发板上的图片信息通过串口发送至3G模块,并实现连接网络,从而实现彩信的发送。彩信发送的流程图如图5.13所示,在发送彩信之前进行初始化,包括串口奇偶位、波特率、停止位及超时时间的设置等,串口的波特率设为9600。41 图5.13彩信发送流程图彩信发送流程代码如下:voidThreadTX(){DWORDByte,dwsize;charrec[TEXTSIZE],picture[TEXTSIZE],s[TEXTSIZE];while(WaitForSingleObject(g_hmms,INFITTITE)=WAITOBJECT0)//等待异常事件{hpic=CreateFile(TEXT("\NandFlash\0;jpg"),GENERICJLEAD,FILESHAREREAD,NULL,OPENEXISTING,FILEATTRIBUTENORMAL,O);//打开图片DWORDdwRead=-1;TCHARbu}10000];dwsize=GetFileSize,NULL);//获得图片大小;ReadFile(hpic,bufdwsize,&dwRead,NULL);Sleep(1000);42 WriteFile(hComPort,"at+cmmscurl="mmsc.monterner.com"r ",sizeof("at+cmmscurf="mmsc.monterner.com"1r ")-l,&Byte,NULL);////设置彩信网址;ReadFile(hComPort,rec,64,&Byte,NULL);//读返回;Sleep(1000);WriteFile(hComPort,"at+cmmsnetcfg=1,"cmwap"r ",sizeof("at+cmmsnetcfg=1"cmwap"r ")-I,&Byte,NULL);//设置彩信实现方式为基于WAP方式;Sleep(1000);WriteFile(hComPort,"at+cmmsproto=1,"10.0.0.172",80r ",sizeof("at+cnunsproto=1,"10.0.0.I72",80r ")-l,&Byte,NULL);//连接3G;Sleep(1000);WriteFile(hComPort,"at+cmmssendcfg=6,3,0,0,2,4r ",sizeof("at+cmmssendcfg=6,3,0,0,2,4r ")-1,&Byte,NULL);//配置彩信;Sleep(1000);WriteFile(hComPort,"at+cmmsedit=1r1n",sizeof("at+cmmsedit=1r ")-1,&Byte,NULL);//进入彩信模式;Sleep(1000);sprintf(s,"at+cmmsdown="pic",%d,20000r ",dwsize);//准备发送彩信图片信息;{WriteFile(hComPort,"at+cmmsrecp="15620011753"r ",sizeof("at+cmmsrecp="15620011753"r ")-1,&Byte;NULL);//设置联系人号码;Sleep(1000);WriteFile(hComPort,"at+cmmsviewr ",sizeof("at+cmmsviewr ")-1,&Byte,NULL);Sleep(1000);43 WriteFile(hComPort,"at+cmmssendr ";sizeof("at+cmmssendr ")-1,&Byte,NULL);Sleep(20000);ReadFile(hComPort,rec,64,&Byte,NULL);if(strstr(rec,"OK")!=NULL)//判断是否发送成功,未成功则重新发送,成功则结束;{ResetEvent(ghmms);//结束彩信发送;SetEvent(ghhum);}}}}5.6客户端整体设计在前面的无线视频采集终端的软件设计中,已经实现了视频的采集与编码,再由3G无线网络传输至服务器后,需要在PC机能够接收带有监控视频流的数据包,并对其进行解码和播放。监控终端系统框图如图5.14所示。图5.14监控终端系统框图5.6.1视频流接收与RTP解包监控终端采用UDP服务器的方式进行工作。这在前边介绍Lunix的部分已经进行了介绍,即在嵌入式Lunix中践行程序编制,当前多数系统均支持socket,如果所使用的系统为Windows。不过尽管Windows提供对socket的支持,不过对不同的编程开发环境而言,所提供的接口函数不尽相同。因为本设计中使用了QtCreator作为监控终端软件的开发环境,因此在实现Lunix与Windows连接时还需要使用Qt提供的套接字创建等相关数据传输的函数。具体执行过程与Lunix44 的流程类似,只需要添加以下头文件:#include#include#include#include类中支持UDPsocket,用户能够使用其进行数据报QAbstractSocket类的子类的发送和接收。QUdpSocket::bind用于绑定端口号。QHostAddress::setAddress用于设置固定IP地址。QUdpSocket::writeDatagram用于发送端把数据报发送到与其端口号一致的接收端,接收端需要绑定该端口号。QUdpSocket::readDatagram用于接收UDP数据报。监控终端通过网络接收RTP包,而其中有效数据(视频流)主要位于RTP包的NALU中。NALU需要按照RTP协议进行打包成RTP包后才可以在网络中传输。按照RTP的负载格式标准,H.264视频流的RTP载荷封装方式有单个NALU分组、聚合分组和分片分组三种方式(1)单个NALU分组。单个NALU分组是把一个完整的NALU打包成一个RTP包,NALU的头字节同时作为RTP载荷的头。当单个NALU长度不大于1400Byte时,才可以采用一个单个RTP包发送。当一个NALU大于1400字节时,就需要采用分片分组方式。(2)聚合分组。聚合分组是把几个NALU聚合封装到一个RTP包中,为了降低报头开销,提高传输速率,可以将一些短小H.264的NALU聚合封装到一个RTP包中。聚合分组包括用于低延迟环境的单时聚合分组(STAP)和用于高延迟环境的多时聚合分组(MTAP)两种类型。(3)分片分组。当某个NALU尺寸较大时,由于网络传输协议的最大传输单元(MTU)一般低于1500个字节,所以选用此方式,把此NALU分割成多个RTP包。根据RTP及H.264负载标准规定,当一个NALU长度大于MTU,时就必须采用此种分组方式。分片分组有FU-B和FU-A两种类型。具体解包流程如图5.15所示。45 图5.15RTP解包流程5.6.2解码器移植FFmpeg是集转码、音视频编解码等众多功能于一身,支持LGPL与GPL协议的一款完备的开源解码器。FFmpeg基于Linux开发,但是经过移植后可以在许多操作系统上运行,可以解码多种视频格式,对于H.264中的X264、T264和JM86编码格式的文件均可进行解码。本系统选用的是一个比较低的版本-ffmpeg-0.5版本,它更容易移植,而且功能完全可以满足要求。FFmpeg在32位Windows操作系统下的安装编译过程如下所示:(1)在Windows操作系统中配置MinGW+msys编译环境,搭建MinGW环境,安装msys工具,并下载ffmpeg-0.5源码包。(2)打开msys控制台,进入FFmpeg-0.5源码文件夹,运行“./configure”命令,开启H.264、mjpeg解码功能以及设置环境为32位Windows等功能。(3)运行“make”命令开始进行编译。(4)编译完成后会得到静态库文件libavcodec.a和libavutil.a,复制这两个文件至源代码文件夹ffmpeg0.5/lib中。然后,用户就可以使用不同的开发环境调用FFmpeg解码库了,本系统选用的是Qt窗口应用程序开发环境。46 5.6.3视频流解码FFmpeg提供了许多库及组件如:和libpostproc等库,同时还提供了用于用户测试的ffmpeg、ffplay和ffserver应用程序。其中libavcodec组件包含了FFmpeg的全部音频/视频编解码所需要的库;libavutil提供了公共工具函数库;libswcale是视频播放前调整色彩映射与画面比例的库;libavformat支持大量的音视频格式,可以实现音频、视频数据流封装、格式生成以及解析功能,能够从含有音频视频数据的RTP包中分离出载荷(视频流)。具体实现的过程如下:Step1:首先完成解码器的初始化工作。Avcodec_nit();avcodec_register_all();codec_avcodec_nd_decoder(CODEC_D_264);picture=avcodec_alloces_frame();frame_rgb=avcodec_alloc_ame();avcodec_open(c,codec)Step2:在缓冲区中得到数据,开始解码工作。Step3:通过FFMPEG库接口进行解码。len=avcodec_decodevideo(c,picture,&gotesframe,strm,data_size)ctx=sws-getContext(c->width,c->height,c->pixesfmt,c->width,c->heigh);PIX_MT_GR24,SWS_ICUBIC,NULL,NULL,NULL);sws_scale(ctx,picture->data,picture->linesize,0,c->height,framergb->data}framergb->linesize);sws_eeContext(ctx);Step4:将解码后的数据放入到显示缓冲区中。FFmpeg解码的流程如图5.16所示。47 图5.16视频解码流程图5.6.4客户端软件设计本系统监控客户端需要完成以下几点要求:(1)接受视频采集信息,并进行实时显示;(2)通过控制指令控制视频监控设备的工作状态;(3)实时显示监控设备的时间信息。旨在为用户提供交互友好的环境,便于用户较为只管的观察到监控视频和相关控制信息,需要在设计中添加图形化界面。在本系统设计过程中,视频监控系统终端界面是借助QtCreator进行编写的,操作系统为Windows。QtCreator是基于C++语言设计的兼容多平太的程序开发环境。能够支持Mac、unix等多种操作系统,是基于自行开发的C++库环境设计的,能够完成一次编写处处编译的功能,能够在某一个平台上进行代码编写,进而在其它系统环境中再次对程序进行编译,用户无需对代码进行修改,这就给程序编程者节省了很大的移植时间。同时提供了多种功能组件,在编辑窗口下,可以将其位置进行拖动,即所见即所得,便于初学者的学习和设计。使用QtCreator设计的监控终端图形界面如图6.1所示。本系统设计中使用的Qt开发平台为4.8.3版本以及IDE的QtCreator2.6.1编程环境。这与传统的IDE环境一样,首先在QtCreator开发程序中新建立一个工程,随后选择Gui工具,之后对刚新建的桌面展开参数配置,便可以获得GUI48 框架。在项目中使用.ui函数,便可以对程序的布局进行自由布局设计,十分便捷简单,并且也可以通过键入代码来实现该功能。系统设计中主要用到的组件包括Push、Label等。具体界面如图5.17所示。图5.17监控终端界面Qt采用独特的信号与槽机制,如同VisualC++中的消息映射机制,即发送一个信号让其它程序做出响应,实际就是用信号调用其他的函数。本系统中的按键发送指令就采用了这种方式。5.6.5系统程序多线程设计线程属于轻量级进程。线程与进程相比而言,创建所需要的开销较低,能够在同一进程中完成多种任务。同时单一进程中的线程能够无需复制便可完成资源间的共享。进城之间的通讯科借助管道、信号等手段完成。操作较为繁琐,效率不高,单一进程中多个线程能够实现多个线程之间的通信进而降低资源开销。本课题基于3G无线监控系统可以大致分为以下两个部分,即视频监控前端和后端。其中前端使用嵌入式Lunix完成,需要在在其实现的线程包括监控视频采集、H.264视频编码、RTP数据封装和3G网络传输等线程:Linux的多线程功能遵守POSIX标准。需要调用的头文件为prhread.h。线程的创建与结束:创建新的线程:pthread_create();线程的结束:pthread_join();因为视频采集和线程编码要在同一时刻执行,采集线程则需要将视频数据编至链表中的节点中,同时编码线程还需要从该节点中进行数据数据编码和读出,49 这就可能出现两者在同时刻对单一节点的操作,这是系统所不允许的,因此需要对同一节点实现互斥访问功能,也就是通过互斥锁将某一节点锁住,在单一时间内仅允许对某一线程的单一操作,需要在系统中添加互斥锁:获取互斥锁:pthread_mutex_lock();释放互斥锁:pthread_mutex_unlock();与监控前端不同,视频监控终端最终是要在Windows操作系统中运行,这就需要使用QtCreator进行开发,Qt具备自己独有的多线程机制以及实现手段。监控终端需要完成的线程包括:监控视频RTP包接收与拆包、H.264解码与显示。Qt工具内置了涉及多线程的类,例如在执行新线程的Qthred类、用来提供逐线程数据存储的QThreadStorage类、提供互斥锁和互斥量的QMutex类、自动对QMutex加/解锁的QMutexLocker类、提供整型信号量的QSemaphore类和提供能使线程在被唤醒之前保持休眠状态的QWaitCondition类等。因为规模较大的监控系统多有多个监控前端以及相应的单一监控终端构成。因此,本系统的终端的作用相当于UDP网络服务器,不同监控前端作为客户端的形式连接到监控终端服务器上。不同路监控终端,在执行过程中需要同时进行两条线程的创建,方能实现两者的通信:其一,接收数据包线程,同时能够完成后续RTP拆包、视频解码播放的任务处理;其二,发送控制命令至监控前端线程。两个线程需要同步运行。50 第六章系统测试本系统在实验室环境中进行模拟测试,主要测试实现两部分功能:(1)有警情时,用户手机会收到彩信提示。(2)用户可以远程通过客户端作为人机交互界面,査看现场视频、打开或关闭传感器或摄像头等功能。6.1报警测试系统启动运行后,模拟有人闯入:在监测区有人经过时,热释电传感器在检测到人体红外信号时,会产生一个高电平,用以触发摄像头的开启。同时3G模块通过放置其中的USIM卡向用户手机发送彩信,卡号在手机里面的存储名为“监控前端”。效果如图6.1所示。如果红外源一直处于HC-SR501的监控范围内,视频监控将保持开启态,直到红外源离开,由红外信号的下降沿控制自动关闭。图6.1彩信报警信息图6.2视频传输测试6.2.1客户端显示测试本课题将H.264解码的分辨率设定为320×240,图像数据经解包解码处理51 后由监控客户端进行实时显示,监控客户端是用Qt软件编写的人机交互界面,运行于windows环境下,用以显示图像信息。图6.2为监控中心客户端接收显示视频图像的画面。图6.2监控中心接受的实时监控图像52 由客户端监控图像可以看出,客户端在320×240分辨率播放出的监控视频具有较好的实时性,监控图像播放流畅,没有出现花屏、卡顿等情况。6.2.2传输性能测试为了测试本系统是否稳定、流畅,需对系统进行多次传输测试,用以判断传输效果是否达到设计要求。视频传输效果主要与延迟度和丢帧率有关,本课题对系统进行了十次传输测试,并统计了这十次的平均延迟时间和丢帧率,统计结果如表6.1所示。表6.1性能测试表次数发送帧数客户端接收帧数延迟时间(ms)1600059903022600059792943600059332954600059503035600059452856600059883147600059793138600059502989600059473021060005980289通过以上数据可以对比得出,将图片以固定大小发送,丢帧率较低,基本保持在0.6%以下,延迟时间平均在300ms左右,画面显示流畅,显示效果良好,满足了设计要求。53 54 第七章结论与展望7.1结论本文主要介绍了视频监控系统的发展历程,分析了H.264压缩技术和3G无线网络通信技术,结合在野外条件下视频监控系统的新需求,设计了一套基于3G无线网络通信技术的视频监控系统。具体完成的研究工作如下:(1)在PC机上安装Linux操作系统,搭建交叉编译环境。(2)在S3C6410开发板上实现Linux操作系统的运行,包括Bootloader的移植、内核剪裁和文件系统的移植。(3)利用红外热释电传感器触发CMOS摄像头,并进行彩信报警,并利用3G模块进行传输。通过与ARM板的硬件电路连接和在驱动的配置,实现了系统的正常运行。(4)对V4L2和H.264编码的工作原理进行了详细介绍,通过V4L2调用摄像头,完成视频数据的采集工作;通过调用ARM内核提供的H.264硬编码器,完成视频数据的压缩工作。(5)通过不同关键技术的比较,确定了以H.264为视频数据编解码标准,RTP/RTCP协议的互相配合使用。(6)利用开源跨平台的FFMPEG解码库,实现客户端的解码和显示播放。(7)利用QtCreator在Windows下开发人机交互界面,用于显示视频画面。7.2对未来工作的展望随着信息传输技术和嵌入式技术的不断发展,无线视频监控系统将得到更广泛的应用。针对本课题所设计的基于3G无线网络的视频监控系统,有几个方面还需进一步的改进和完善:(1)在今后对系统的完善中,要不断提高视频采集的清晰度,并且加入图像识别功能。(2)利用选取不同的传感器达到监控目标的目的,使本监控系统的应用变得更加多元化。(3)考虑到未来4G技术越来越普及,可将4G无线传输技术引入该视频监控系统,达到视频信息的高速传输。55 56 参考文献[1]倪延兵,郭勇.基于3G网络的视频传输技术现状和发展[J].信息通信,2012,01:182-183.[2]廖志川,俞子荣,陈黎娟.基于ARM的移动视频监控终端设计与实现[J].现代电子技术,201,35(10):9-14.[3]李爽,曾庆军.无线通讯技术与视频传输[J].广播与电视技术,2015,01:83-88.[4]王薇.论中国3G发展现状和发展前景[J].广西大学学报,2010,S1:214-215.[5]高林.3G网络下视频无线传输系统的设计与实现[D].哈尔滨工业大学,2011.[6]梁夫彧,李娟,门爱东.现代视频编码关键技术及其发展[J].电力系统通信,2006,03:1-4.[7]黄健,张琳.H.264视频编码技术研究[J].计算机与数字工程,2006,07:83-87.[8]原菲,司占军,顾翀.视频压缩编码技术的发展及应用[J].电脑知识与技术,2013,24:5532-5534.[9]翟立宏.基于H.264的视频编码标准的关键技术分析[J].电子制作,2013,11:44.[10]李波,卢文科,朱文超.基于3G和H.264的无线视频监控系统的设计[J].微计算机信息,2011,05:78-79.[11]XiaoqiangJiang.ResearchofMultimediaDataTransmissionBasedonUDP[J].AdvancedMaterialsResearch,2010,129(2):1291-1295.[12]谭宇华,张为.基于3G通信的嵌入式图像传输系统[J].信息技术,2013,10:89-91.[13]张占军,韩承德,杨学良.多媒体实时传输协议RTP[J].计算机工程与应用,2001,04:9-11.[14]罗建川,刘守印,胡君红,彭新生.实时传输协议RTP的研究及其应用[J].计算机工程与应用,2001,08:82-83.[15]王奔.基于ARM和嵌入式Linux的远程视频监控系统设计[D].南京:南京师范大学,2011.[16]于德海,闫明.关于嵌入式Linux操作系统的研究[J].电子技术与软件工程,2014,14:213-214.[17]曲宏明.基于嵌入式Linux的数字视频监控系统研究[D].大连:大连海事大学,2008.[18]陈岚,鲍可进.基于S3C6410和3G的无线视频传输系统的设计与实现[J].无线通信技术,2014,02:42-46.[19]杨阔.基于ARM和3G的田间视频采集传输系统开发[D].西北农林科技大学,2013.[20]陈龙.基于无线热释电红外传感器人体目标识别的研究[D].武汉理工大学,2013.57 [21]刘舒祺,施国梁.基于热释电红外传感器的报警系统[J].国外电子元器件,2005,03:18-20.[22]李静,王德兴,贾伟强.基于热释电红外传感器的人防警报器防盗系统设计[J].电脑开发与应用,2010,12:26-27.[23]袁霄,潘玉良,凌在盈,李凡.基于ARM的太阳能供电式远程传输终端设计[J].微型机与应用,2012,06:83-85.[24]LiuLei,ZHANGFeng-li,QINZhi-guang.EmbeddedLinux'sBootloaderbasedonU-boot[J].ApplicationResearchofComputers,2007,12:078.[25]路青起,席丹丹.嵌入式Linux系统移植[J].国外电子测量技术,2014,12:78-81.[26]张霄.基于ARM11的嵌入式linux系统移植与实现[D].山东大学,2013.[27]王剑非,孟彦杰,赵勇.基于Linux操作系统的视频采集卡驱动程序设计[J].微计算机信息,2007,23(2):94-96.[28]蒋成明.H.264的嵌入式视频釆集系统的研究与应用[D].江苏:江苏大学,2007.[29]李建坤.基于3G的工地无线视频监控系统设计[D].南昌航空大学,2014.[30]ChuDian,JiangChun-hua,HaoZong-bo.TheDesignandImplementationofVideoSurveillanceSystemBasedonH.264,SIP,RTP/RTCPandRTSP[J].ComputationalIntelligenceandDesign(ISCID),2013SixthInternationalSymposiumon.2013,02:39-43.[31]CaoHan,ZengHao,FuYang.ResearchandImplementationofRTP/RTCPinMobileVideoSurveillanceSystem[J].AdvancedMaterialsResearch.2014,926:2521-2524.[32]彭志辉.基于S3C2440的音视频采集系统设计及其应用研究[D].湖南大学,2013.[33]李波,卢文科,朱文超.基于3G和H.264的无线视频监控系统的设计[J].微计算机信息,2011,05:78-79.[34]ZhangZhenchuan,LunZhanqun.RealizationofStreamingMediaDataMulticastBasedonUDP[J].ProceedingsofInternationalConferenceonComputerScienceandInformationTechnology.2014,255:371-377.58 致谢三年的研究生生活一晃而过,在这三年的学习生活中,我对专业知识进行了深入的学习,积累了宝贵的时实践经验。随着毕业的临近,我的求学生涯也即将画上句号,回首发现,这一路上有过艰辛,有过汗水,也收获了颇多的帮助与感动。经过研究生阶段,我不但为人处事成熟,专业技能也更加成熟,这些都离不开我的导师徐晓辉老师的帮助。徐老师带着我们参与了许多项目,因此学到了很多。在课题的研究中,徐老师给我很多意见和建议,时刻督促我认真完成课题,可见徐老师的严谨和负责。徐老师不仅是我学业上的导师,同时也是我生活上的导师,徐老师为人谦逊、宽以待人,让人感到一种亲和力。特别感谢这三年所有陪伴我一年的同学和老师们。感谢宋涛老师,徐晓辉老师的培养,感谢武兴华、蔡佳珈同学和我一起学习三年,感谢潘辉、孙飞同学的无私帮助,他们给了我很多学习、工作、生活中的帮助,让我在三年的学习工作中成长很多,收获很多。感谢13级物理电子学的所有同学们,他们在学习上和生活中帮助我和关心我,同时感谢他们的配合,使我的班级工作能顺利进行。最后我要感谢我的父母,感谢他们对我学业的支持,他们的支持是我攀登知识高峰的动力源泉。59 60 攻读学位期间所取得的相关科研成果[1]孙岩,徐晓辉,苏彦莽,宋涛,武兴华.便携式土地墒情监测系统设计[J].节水灌溉.2016,06:102-104.61

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

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

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