




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
京 江 学 院JINGJIANG COLLEGE OF J I A N G S U U N I V E R S I T Y基于WEB的远程视频监控系统的研究与设计The design of remote video surveillance system based on WEB学生学号: 3081155033 学生姓名: 缪成鹏 专业班级: 电信工程 0802 指导教师姓名: 李正明 指导教师职称: 教授 2012年 6月基于WEB的远程视频监控系统的研究与设计专业班级: 电信工程 0802 学生姓名: 缪成鹏 指导教师姓名: 李正明 指导教师职称: 教授 摘 要 随着网络通信技术和嵌入式技术的发展,基于嵌入式Web服务器的视频监控系统已成为监控领域的发展趋势,采用BS架构的嵌入式Web服务器,监控者无需到现场操作,系统成本低廉,设备体积小巧,安装方便,故障维护升级简单,安全可靠,满足了现代消费者的需求。本文针对视频监控设备前端一体化、小型化和便携等相关需求,以动态数据交互技术和移动通信技术为基础,借助嵌入式系统的网络支持,设计了一种基于Web服务器的BS方式的远程视频监控系统。设计中以ARM7芯片和Linux系统为软硬件开发平台,结合嵌入式Web技术,给出了视频监控系统的总体设计方案,深入研究了各个功能模块。目前3G无线通信网络正在普及,为了满足未来移动监控的需要,本系统数据传输引入了3G无线模块的方案,为后续研究奠定了基础。本文主要研究的嵌入式Web服务器的远程视频监控系统的软件设计,对现代视频监控的研究具有一定的参考价值。关键词: 视频监控 嵌入式Web ARM Linux 3G无线通信 The design of remote video surveillance system based on WEBAbstract With the development of the communication and network technology and embedded technology, the video surveillance system based on the embedded Web server has been the development tendency in the monitoring field. Because an embedded Web server based on B/S is usually adopted by remote monitoring system,it neednt be operated at a special physical positionThis design method can reduce the cost as well as the size of the entire systemThe device is more convenient to be installed,easier to be maintained and upgradedIt can provide safe and reliable services to meet the demands for modern peopleThis paper aiming at satisfying the needs of the front-end integration, compact,portable in current video surveillance systems,a Web-based the B/S mode remote video monitoring system is designedWe adopt the ARM7 and Linux systems as soft hardware development platform in our designCombining with embedded Web technology. We are mainly engaged in following work. 3G wireless communication networks are currently popular, in order to meet the needs of future motion monitor,the data transmission of the system introduces 3G wireless moduleIt lays the foundation for further studyAn embedded Web server for remote video monitoring system described in this paper has a certain reference value for vehicle video motion monitoringKey words: Video monitoring embedded Web ARM Linux 3Gwireless communication 目 录第一章 绪论111课题研究的背景和意义1111模拟视频监控系统1112本地数字视额监控系统2113远程网络视频监控系统212视频监控系统的发展趋势313嵌入式视频监控系统常见设计方案414本文的主要研究工作6第二章总体方案设计及平台搭建721 远程视频监控系统方案设计7211 监控系统整体网络结构设计7212视频监控系统硬件方案设计10213视频监控系统的系统软件选择1122系统开发平台的搭建122.3嵌入式Linux的移植1324本章小结14第三章视频采集模块的设计与实现1531 基于V4L2的视频采集模块设计153.1.1 V4L2视频采集的数据结构153.1.2 V4L2视频采集的流程16313视频数据的存储2332视频编码23321视频编码技术的选择24322基于FFmpeg的H.264编码2533视频数据库27331 SQLite数据库的设计27332 SQLite的编译与移植2934本章小结30第四章Web服务器的搭建与数据的传输3141嵌入式Web服务器的构建314.1.1嵌入式Web服务器的选择314.1.2 Boa的移植和配置334.1.3公共网关接口(CGI)技术344.2 3G无线网络视频传输3643本章小结39第五章总结与展望4051 总结4052展望41致谢42参考文献43第一章 绪论 网络通信和微电子技术的快速发展和人民物质生活水平的提高,使得人们的生产行为,生活方式发生了重大的变化,视频监控以其直观,方面和内容丰富等特点日益受到人们的重视。安防监控从银行到交通路口,从连锁超市到小区范围,都会看到监控产品的存在,大量犯罪案件在安防监控产品的帮助下破获。人们意识到视频监控对生产生活的安全非常重要,而网络视频监控凭借其先进的技术和贴近用户习惯的使用方式,逐步走进人们的生活当中。 视频监控系统在保护安全,预防犯罪方面起到不可低估的作用,监控市场领域不断扩大。据权威部门统计,1998年全国图像监控系统的市场总额为650亿元,今年来一直保持15至30的速度快速增长。随着摄像设备价格逐渐下降,计算机计算能力增强和网络速度的提高,视频监控技术得到了快速的发展。11课题研究的背景和意义 视频监控系统的产生和发展有两个方面的原因:一方面,随着人们安全防范观念的加强,人们迫切希望通过监控的方式来预防和减少公共场所的破坏及犯罪活动。另一方面,视频技术和网络通信技术日益成熟,为它的实现和应用奠定了基础;而计算机技术和多媒体技术的迅速发展,将自动控制和多媒体技术融入到视频监控系统中来,促进了它的普及和应用。视频监控系统的发展大致经历了三个阶段:a、模拟视频监控系统;b、本地数字视频监控系统;c、远程网络视频监控系统。111模拟视频监控系统采用模拟方式传输,最简单的就是将图像信号直接送入视频电缆进行传输。每一监控点的视频信号都通过一条电缆线连接到中心控制室的多路切换器上,以手动切换方式选择监控点图像,使之显示在监视器上。模拟视频监控有以下弊端:运行及维护成本高;视频图像的质量不能在任意时刻调整;无法联网,只能以点对点的方式监控现场,使得布线工程量极大;检索困难;难以做到无人值守。112本地数字视额监控系统进入20世纪80年代,随着数字化技术的发展,人们从过去的模拟处理方式转向数字处理方式,开始使用计算机处理图像信号。利用计算机的数据处理能力与显示器的高清晰度,将视频信号通过视频采集卡采集到计算机中,显示在显示器上,大大提高了图像的画质,但是控制与切换仍采用传统的单片机方式,只是计算机串口与之相连,完成控制工作。尽管它有良好的人机界面,较好的稳定性,但它不能称为真正的数字图像监控系统。其根本原因在于系统设计的出发点不是基于计算机,而是基于传统模式。大部分时间里,计算机只是充当一个外部监视器的角色,并且传统单片机系统固有的弊端并没有克服,通信协议的多样化与专用化很难统一,导致现有的计算机资源远远满足不了多种设备的要求。另外计算机的运行速度较低,而数字视频的数据量又很大,这样就限制了利用一台计算机同时处理更多数字视频信号的能力。很难组建大型监控系统。113远程网络视频监控系统第三代视频监控系统远程网络视频监控系统。远程网络视频监控系统的关键设备是网络视频信号采集终端(也被称为视频服务器),网络视频信号采集终端采用嵌入式实时多任务操作系统。摄像机送来的视频信号在网络视频信号采集终端数字化后由高效压缩芯片压缩,通过内部总线送到网络接口发送到网络上,网络上用户可以直接用在PC机上用浏览器观看网络视频信号采集终端传送过来的摄像机所拍摄的图像,授权用户还可以通过计算机网络透过网络视频信号采集终端控制摄像机镜头和云台的动作或对系统进行配置操作。由于把视频压缩和网络功能集中到一个体积很小的设备内,可以直接连入局域网,达到即插即用,省掉多种复杂的电缆,安装方便,仅需设置一个IP地址,用户也无需安装任何硬件设备,仅通过PC机用浏览器即可观看。数字网络视频监控系统与其它监控系统的比较:布控区域广阔。数字网络视频监控系统的网络视频信号采集终端直接连入网络,没有线缆长度和信号衰减的限制,同时网络是没有距离概念的,彻底抛弃了地域的概念,扩展布控区域;系统具有几乎无限的无缝扩展能力。所有设备都以IP地址进行标识,增加设备只是意味着IP地址的扩充;可组成非常复杂的监控网络。采用基于网络视频信号采集终端为核心的系统,在组网方式上与以往的监控方式有极大的不同,由于视频信号采集终端输出已完成模拟到数字的转换并压缩,采用统一的协议在网络上传输,支持跨网关、跨路由器的远程视频传输;性能稳定可靠,无需专人管理。视频信号采集终端实际上基于嵌入式电脑技术,采用嵌入式实时多任务操作系统,又由于视频压缩和网络功能集中到一个体积很小的设备内,直接连入局域网或广域网,即插即看,系统的实时性、可靠性大大提高,也无需专人管理,非常适合无人值守的环境;当需要同时观看多路监控视频时,对网络带宽就会有一定的要求。12视频监控系统的发展趋势将嵌入式系统技术、无线通信技术和基于TCP/IP的Internet就技术结合在一起的视频监控系统将成为监控系统的未来发展方向。利用嵌入式技术采集并对现场信息进行相应处理,再通过无线通信方式传输到Internet上,用户通过internet来管理和使用信息。由于采用了3G等无线数据通信方式,可省去有线方式下必须采用的物理布线,并且无线方式有利于对监视点的合理安排,克服了传统系统只能用于固定现场的监视。因此,这种监视方式在工农业生产、移动通信、家用电器自动化等领域都具有相当广阔的应用前景。目前,视频监控系统的发展趋势可以概括为:1)视频监控数字化。视频监控发展经历了模拟视频监控、半数字监控、数字监控三个阶段。对于视频监控,数字化存储带来的是一场革命性的变化。数字化是21世纪的时代特征,视频监控的数字化是监控技术的必然趋势。2)视频监控智能化。智能化是视频监控技术发展比较高级的层次。由于视频监控的数据量非常大,而用户真正需要的信息只是少部分,真正需要监视的只是发生概率很小的某些事件,如何通过海量数据获取有价值的信息,如何从目视解释变为机器自动解释是视频监控技术发展的一个新方向。因为能把视频监控从静态的、事后取证变成动态的、实时预防和告警对用户来说明显更加重要。实际上现有的大型监控系统都配置自动位移侦测、昼夜自适应切换存储、预警设置(如可疑人物照片、指纹等)等一些基本的智能化功能。3)视频监控IP化。视频网络、PTV等都是网络快速发展的重要应用。随着Internet技术的发展,基于IP的视频监控更能为人们所接受,网络摄像机把压缩的视频信息通过TCP/IP协议,采用流媒体技术实现视频在网上的多路复用传输,拥有授权的用户可以随时访问互联网,实现对整个监控系统的指挥、调度、存储、授权控制等功能。因此,基于IP的视频监控将会成为主流。4)视频监控无线化。随着无线宽带网络的发展,基于3G的无线视频应用备受关注。当监控点分散且与监控中心距离较远,或被监控对象不固定(如出租车、运钞车等)时,利用传统有线网络的视频监控往往成本高且难以实现,而基于多种无线传输手段的移动视频监控具有不可替代的优势。根据视频网络传输方式,远程视频监控系统可分为有线网络远程监控和无线网络远程监控两种方式。无线视频监控系统克服有线网络铺设上投资成本高、距离受限的弊端,使远程视频监控系统的无线化逐渐成为近年来的发展趋势。远程视频监控的无线化包括两个方面:1)监控中心(监控者)和被监控对象都是可以移动的,不受有线网络束缚,监控地点灵活,即监控者和被监控对象都可以是动态的。2)视频监控网络的无线化。无线网络远程监控又分为两种:一种单独构建无线网络,基于WLAN(无线局域网)、无线城域网的WiMAX技术的视频监控系统技术已经成熟,但自己构建网络需要传输设备、中继站等,工作量大。另一种基于移动通信网络,依托遍布全球的2G和3G无线通信网络,打破了距离的限制,可以实现全球漫游监控。2G通信网络主要是利用GPRSCDMAEDGE数据业务通过Internet进行通信,GPRSCDMAEDGE数据传输理论最大值为171.2kbps144kbps473.6kbps。中国国产3G标准TD-SCDMA的通信网络,网络数据传输带宽将达到2Mbps。H.264格式的压缩编码视频帧率为30fps25fpS15fps所占用的码率为384Kbps256Kbps128Kbps因此,基于3G通信网络的远程视频监控系统有望实现实时监控流畅视频。13嵌入式视频监控系统常见设计方案目前,国内外基于嵌入式网络视频监控系统的研究,一般集中于嵌入式视频监控系统的设计、嵌入式操作系统的研究、视频图像处理以及视频图像的网络传输等几个方面。在嵌入式视频监控系统设计方面,一般考虑系统的整体结构和功能,基于BS(浏览器和服务器)或者CS(客户端和服务器)架构,具体功能模块采用软件或硬件技术等。例如小型网络摄像机,系统由图像传感器、嵌入式处理器、图像处理器、网络接口组成,通过压缩优化算法和背景差分算法,可以使摄像机实现实时的图像压缩、传输,并能跟踪目标,该系统的主要特点是实时性的提高;在嵌入式操作系统方面,除对系统进行一些剪裁和移植外,一般集中于嵌入式系统驱动程序的研究,例如在嵌入式Linux下对视频采集设备驱动程序的研究等;关于视频图像处理的研究,一般是通过一定的图形分析算法,实现目标识别,目标跟踪,以及报警等功能。例如利用背景差分算法,在图像处理中控制运动模块,使摄像机可以跟踪信息库中的目标网等;对于视频图像网络传输的研究方面,例如,有在IP组播方式下的网络视频传输方案,可以大大的节约网络带宽,提高视频的播放效率。或者采用流媒体的格式传送视频图像数据,可以更好的实现视频的传输及播放等。现阶段,嵌入式网络视频监控系统的解决方案主要有以下几种:1)视频采集芯片+DSP处理器该方案中由视频采集芯片完成图像的预处理,由DSP完成图像的编码,基于MPEG-4、H.264或MJPEG标准的压缩,经以太网网络传输。方案的主要缺点是控制不够灵活,不适合作系统控制,另外,DSP通常没有强大的操作系统支持。2)DSP处理器+嵌入式处理器该方案采用由DSP完成基于MPEG-4、H.264或MJPEG标准的图像压缩,在嵌入式处理器ARMFPGA上运行嵌入式操作系统进行系统控制和网络传输。方案的主要缺点是:由于有两个主要的芯片,设计、调试、使用等方面具有一定难度,且系统成本偏高。3)图像采集芯片+嵌入式处理器该方案中,在嵌入式处理器上运行嵌入式操作系统进行系统控制和网络传输。方案的主要缺点是:其应用主要针对某一类产品,如数码摄像机,所以具有一定的局限性;缺乏强大的图像处理能力,很难满足高实时性要求。4)其他方案可以采用DSP中央处理器完成图像压缩编码、编码数据网络传输和本地存储,CPLD完成图像采集的控制逻辑的脱机远程视频监控方案。14本文的主要研究工作1、课题研究背景和意义;2、嵌入式网络视频监控系统中的关键技术介绍:3、系统的硬件结构设计,包括:1、硬件系统整体结构的设计; 2、以微处理器S3C4510B为核心的主控电路及其外围电路的设计;4、宿主机上硬件开发平台的搭建。5、系统的软件设计,包括:1、嵌入式Linux系统uCLinux的来源、特点以及结构介绍:2、宿主机上Linux开发环境的建立与使用;3、uCLinux内核的升级、编译方法和详细过程:4、在uCLinux上添加用户应用程序的步骤;5、嵌入式WEB服务器的介绍以及与其相关的各项技术简介;6、嵌入式WEB服务器各个功能模块的实现,包括主程序、用户管理模块、设备管理模块、网络管理模块的实现。第二章总体方案设计及平台搭建随着压缩编码技术、计算机网络技术和嵌入式系统的发展以及芯片成本的下降,以嵌入式视频服务器为核心的视频监测系统在市场上崭露头角。通用的Web服务器通常用于有大量用户并发访问的普通网站,以强有力的数据库为用户提供商业服务,而嵌入式处理器能力和存储容量有限,通用大型服务器无法在嵌入式设备上运行。因此,采用功能相对简单、体积更小、消耗资源更少的嵌入式Web服务器,是近年来出现的一种较为先进的方案。目前,嵌入式Web服务器的实现方法可以分成自主实现和修改移植两种。自主设计需要自己开发网络协议,难度及工作量较大。由于Linux的开放源码思想和优良的网络功能,使它非常适合于嵌入式Web服务器应用中,并能为开发者缩短开发周期和成本,这种开发方式是现在以至今后流行的开发方法。21 远程视频监控系统方案设计比较前面给出的几种嵌入式网络视频监测系统的解决方案,对于网络视频监控系统来说,视频采集卡+DSP方案没有强大的操作系统和网络协议栈,不太适合做网络视频监控系统;DSP+ARM方案中,DSP进行图像处理,删进行指令控制,设计得当效果不错,但该方案采用了两个处理器,成本提高,开发周期长,设计、调试上也具有一定困难;视频采集卡+ARM方案缺乏强大的图像处理能力,不能满足实时性要求。目前,嵌入式微处理器性能大大提高,3G无线通信技术日趋成熟普及,因此,本文方案只采用ARM核心处理器,软件方式压缩视频图像,成本低廉,适合家庭应用。211 监控系统整体网络结构设计嵌入式网络监控系统是以嵌入式设备作为Web服务器接入Internet网络的.嵌入式设备连接到网络后,以何种网络结构构成系统,就涉及到了网络体系结构的选择问题。网络体系结构对整个网络监控系统来说是处于基础地位的,合理选择网络体系结构对系统运行效率、系统应用的广泛性和可维护性都有至关重要的作用。C/S和B/S结构是当今世界开发模式技术架构的两大主流技术。CS是美国Borland公司最早研发,BS是美国微软公司研发。目前,这两项技术已被世界各国所掌握,国内公司以CS和BS技术开发出的产品也很多,这两种技术都有自己一定的市场份额和客户群。C/S(Clien/Server)结构即客户机和服务器结构。它是软件系统体系结构,C/S结构充分利用两端硬件环境的优势,将任务合理地分配到Client端和Server端,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件。因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在客户端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)【14】。Client/Server结构是建立在局域网的基础上的,Browser/Server结构是建立在广域网的基础上的。总结它们主要的区别如下:(1)硬件环境不同C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。B/S建立在广域网之上的,不必是专门的网络硬件环境,例如电话上网,租用设备,信息自己管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。(2)对安全要求不同C/S通常面向相对固定的用户群,对信息安全的控制能力很强。一些高度机密的信息系统采用CS结构比较适宜,通过B/S发布部分可公开的信息。由于BS建立在广域网基础上,对安全的控制能力相对弱,面向的是不可知的用户群。(3)对程序架构不同C/S程序更加注重流程,也可对权限多层次校验,对系统运行速度可以较少考虑。B/S对安全以及访问速度的多重考虑,建立在需要更加优化的基础之上。比C/S有更高的要求,B/S结构的程序架构是发展的趋势,从微软的.Net系列,全面支持网络的构件搭建的系统,到SUN和IBM推的JavaBean构件技术等,使B/S更加成熟。(4)软件重用不同C/S程序从整体性方面考虑,构件的重用性不如在B/S要求下的构件的重用性好。BS的多重结构,具有构件相对独立的功能。(5)系统维护不同系统维护是软件生存周期中开销大、相当重要的环节。C/S程序必须从整体考察,处理出现的问题以及系统升级难,通常是再做一个全新的系统。B/S构件组成方面,构件可个别的更换,实现系统的无缝升级。系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。(6)处理问题不同C/S程序可以处理用户面固定,并且在相同区域,安全要求高的需求,与操作系统相关,应该都是相同的系统。B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法做到的,与操作系统平台关系最小。(7)用户接口不同C/S多是建立在windows平台上,表现方法有限,对程序员普遍要求较高。B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流,并且大部分难度减低,降低开发成本。(8)信息流不同C/S程序一般是典型的中央集权的机械式处理,交互性相对低。B/S信息流向可变化。综上所述,根据C/S和B/S结构的不同点,比较出C/S结构具有应用服务器运行数据负荷较轻、数据的储存管理功能较为透明的优点,C/S结构的劣势是高昂的维护成本且投资大。B/S结构维护和升级方式简单,成本低廉、操作系统选择更多,但有应用服务器运行数据负荷较重的缺点。本文监控系统具有家庭小型应用的特点,数据量不大,需要成本低廉、简单易用、维护方便,因此,本文的视频监控系统采用BS结构。212视频监控系统硬件方案设计1)开发环境的简图嵌入式系统通常为一个资源受限的系统。直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的办法是,先在通用计算机上编写程序,然后,通过交叉编译,生成目标平台上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行。具体的硬件平台连接如2.1图所示。图2.1系统的硬件结构原理图213视频监控系统的系统软件选择嵌入式操作系统已经被广泛应用到大量以嵌入式处理器为硬件基础的系统中,常见的嵌入式操作系统有:Linux、VxWorks、Windows CE、Symbian、Palm等。这些操作系统都各有自己强劲的优势,Linux以其开源的经济优势得到中小型企业的青睐;VxWorkS具有优良的可靠性和卓越的实时性,系统和开发环境都是专用的,开发成本高、支持硬件数量有限,使得其多数应用在高精尖技术领域中;Windows CE有着全球最大的操作系统厂商Microsoft强大的技术后盾,市场份额越来越多:Symbian操作系统是全球最大的手机开发制造商NOKIA的手机操作系统,广泛应用于高端智能手机上:Palm是专门为掌上电脑开发的OS,占用内存少,具有极强的开放性【9】。本系统的嵌入式设备考虑到源代码的学习性和家用设备成本问题,采用了开放源代码、高性能可剪裁内核、网络功能优秀的Linux系统。本系统Linux内核采用了2.6.12版本,与2.4.x版本相比,Linux2.6内核对系统的稳定性、统一的设备模型、即插即用支持、大数量的蝴支持、扩展性、文件系统等方面进行了改进,尤其是抢占式内核、I/O性能的改进提高了系统的实时性。这将显著提高交互式和多媒体应用程序的性能。因此,本文的嵌入式视频监控系统的总体架构图如图2.2所示。Web浏览器3G网络Web浏览器3G网络数据文件图形界面web服务器web页面交互程序程序接口USB硬盘USB摄像头客户端客户端Linux操作系统 图2.2基于嵌入式Web服务器视频监控系统总体架构图22系统开发平台的搭建有的嵌入式操作系统的处理能力和存储能力较弱,不能在它上面安装开发软件;有的嵌入式操作系统的处理器结构特殊,没有可以在上面运行的开发工具。所以,在嵌入式系统开发时,通常需要采取交叉开发的方式进行。交叉开发环境的模型如图2.3所示。程序代码TARGET目标程序HOST交叉编译数据通信图2.3交叉编译环境模型TARGET是嵌入式系统,HOST是开发主机。在开发主机上可以安装开发工具,编辑、编译目标系统,然后在目标板上运行。这种在主机环境下开发,在目标板上运行的开发模式称为交叉开发。2.3嵌入式Linux的移植从软件的角度来看,一个嵌入式Linux的系统通常可分为四个层次,如图2.4所示:用户应用程序文件系统操作系统内核引导加载程序图2.4嵌入式系统的软件体系结构这四个层次自下而上为:1)引导加载程序。包括固化在固件(firmware)中的Boot代码(可选)和Boot Loader两大部分。2)操作系统内核。如Linux内核,通常包含内核的启动参数。3)文件系统。包括根文件系统和建立于Flash内存设备之上的文件系统。在嵌入式系统中,通常用Ramdisk来作为文件系统。4)用户应用程序。针对特定用户的专用应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。24本章小结本章对远程视频监控系统总体方案进行了设计,搭建了主机开发环境和嵌入式开发环境,对嵌入式Linux系统的Bootloader、kemel和根文件系统进行修改和移植。第三章视频采集模块的设计与实现视频数据的采集是视频监控系统实现的第一步,也是视频压缩和视频传输的基础。本监控系统由多个功能模块构成,视频服务器主要涉及到三部分功能,一部分是基于V4L2的图像采集,一部分是建立嵌入式Web服务器,设计CGI程序,实现用户远程通过Web页面控制视频采集传输的功能,另外部分是建立视频数据库。本章主要对Linux下采用V4L2标准的USB摄像头驱动程序的图像采集过程进行介绍,并采用FFmpeg对视频图像进行H.264格式的压缩编码,同时建立视频数据库,以便浏览器端对图像数据操作。31 基于V4L2的视频采集模块设计V4L(Video for Linux)是在linux内核中关于视频设备的API接口,涉及开关视频设备、采集并处理视频图像信息。V4L从2.1.x版本的内核中开始出现。V4L2(Video for Linux Two)是V4L接口标准的改进版本,修复了第一代的部分设计bug。从2.5.x开始,V4L2就被集成到了内核里。V4L2是音频、视频和其他输出设备的内核接口。与V4L相比,它的扩展性和灵活性都得到了极大的提高,并且支持的硬件设备也更多,但由于它对V4L做了彻底的改造,使得它与V4L并不兼容.USB摄像头在Linux中属于字符设备,成功加载了USB摄像头驱动程序后,插入摄像头就会生成设备文件“/dev/video()”。因此,在应用程序中通过读写该文件取得摄像头采集的图像数据。对于USB口摄像头,其驱动程序中需要提供基本的I/O操作接口函数open()、read()、write()、close()的实现,对中断的处理实现,内存映射功能以及对I/O通道的控制接口函数ioctl()的实现等,并把它们定义在struct file_operations中。这样当应用程序对设备文件进行诸如open()等系统调用操作时,Linux内核将通过file operations结构访问驱动程序提供的函数。3.1.1 V4L2视频采集的数据结构在Linux系统的/usr/include/linux/videodev2h中定义了v412常用的数据结构:struct v4l2_requestbuffers reqbufs; /向驱动申请帧缓冲的请求,里面包含申请的个数struct v4l2-capability cap; /这个设备的功能,比如是否是视频输入设备struct v4l2_input input; /视频输入struct v4l2_standard; /视频的制式,比如PAL,NTSCstruct v4l2_format fmt: /帧的格式,比如宽度,高度等struct v412_buffer buf; /代表驱动中的一帧v4l2_std_id stdid; /视频制式,例如:V4L2_STD_PAI_Bstruct v4l2_querytrl; /查询的控制struct v4l2_control control; /具体控制的值3.1.2 V4L2视频采集的流程Linux下基于V4L2 API接口进行图像采集的程序实现流程图如图3.1.2所示:初始化摄像头打开视频设备开始读设备信息读取映射buffer信息建立内存映开始一帧的图像截取处理一帧图像 编码,拷贝到其他缓冲区等操作等待一帧结束是否结束视频结束图3.1视频图像采集流程图具体的视频采集主要步骤为:1)打开视频设备在Linux中,把视频设备看作设备文件,即/dev,video0。通过调用open()函数来实现,open()函数带有三个参数,第一个为设备文件名,第二个则是打开的类型。用非阻塞模式打开摄像头设备:int cameraFd;cameraFd=open(“/devvideo0”,O_RDWR |O_NONBLOCK,O);如果用阻塞模式打开摄像头设备,则:cameraFd=open(“/dev/video0”,O_RDWR,0);应用程序能够使用阻塞模式或非阻塞模式打开视频设备,如果使用非阻塞模式调用视频设备,即使尚未捕获到信息,驱动依旧会把缓存(DQBUFF)里的东西返回给应用程序。2)设定属性及采集方式打开视频设备后,可以设置该视频设备的属性,例如裁剪、缩放等。这一步是可选的。在Linux编程中,一般使用ioctl函数来对设备的I/O通道进行管理:Extem int ioctl(int_fd,unsigned long int_requst,.)_THROW;_fd:设备的ID,例如刚才用open函数打开视频通道后返回的camer Fd;_request:具体的命令标志符。在进行V4L2开发中,一般会用到以下的命令标志符:VIDIOC_REQBUFS:分配内存VIDIOC_QUERYBUF:把VIDIOC_REQBUFS中分配的数据缓存转换成物理地址VIDIOC_QUERYCAP:查询驱动功能VIDIOC_ENUM_FMT:获取当前驱动支持的视频格式VIDIOC_S_FMT:设置当前驱动的频捕获格式VIDIOC_DQBUF:把数据放回缓存队列VIDIOC_STREAMON:开始视频显示函数VIDIOC_STREAMOFF:结束视频显示函数VIDIOC_QUERYSTD:检查当前视频设备支持的标准,例如PAL或NTSC。这些IO调用,有些是必须的,有些是可选择的。查当前视频设备支持的标准在亚洲,一般使用PAL(720x576)制式的摄像头,而欧洲一般使用NTSC(720x480),使用VIDIOC_QUERYSTD来检测:v412_std_id std;doret=ioctl(fd,VIDl0C_QUERYSTD,&std);wllile(ret=-1&errno=EAGAIN);switch(std)case V4L2_STD_NYSC:case V4L2_STD_PAL:捕获格式当检测完视频设备支持的标准后,还需要设定视频捕获格式:struct v4l2_format fmt;memset(&fmt,0,sizeof(fmt);fmt.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;fmt.fmt.pix.width=720;fmt.fmt.pix.height=576;fmt.fmt.pix.pixelformat=V4L2_PIX_FMT_YUYV;fmt.fmt.pix.field=V4L2_FIELD_INTERLACED;if(ioctl(fd,VIDIOC_S_FMT,&fmt)=-1)return-l;v4l2_format结构体定义如下:struct v4l2_format enum v412_buf_type ; 数据流类型,必须永远是v4L2_BUF_VIDEO_CAPTURE unionstruct V412_pix_format pix;struct V412_window win;struct V412_vbi_format vbi;_u8 raw_data200; fmt;;struct v412_pix_format_u32 width; /宽,必须是16的倍数_u32 height; /高,必须是16的倍数_u322 pixelformat;/视频数据存储类型,例如是YUV4:2:2还是I沁Benum v412_field field;_u32 bytesperline;_u32 sizeimage;enum v4l2_colorspace colorspace;_u32 priv;分配内存视频捕获分配内存:struct v412_requestbuffers req;if(ioctl(fd,VIDIOC_REQBUFS,&req)=- 1)return -1;v412_requestbuffers定义如下:struct V412_requestbuffers_u32 count; /缓存数量,也就是说在缓存队列里保持多少张照片enum v412_buf_type type; /数据流类型,必须永远是/V4L2_BUF_TYPE_VIDEO_CAPTUREenum v412_memory memory; /V4L2_MEMORY_MMAP或/V4L2 MEMORY_USERPTR_u32 reserved2;获取并记录缓存的物理空间使用VIDIOC_REQBUFS,我们获取了req.count个缓存,下一步通过调用VIDIOC_QUERYBUF命令来获取这些缓存的地址,然后使用mmap函数转换成应用程序中的绝对地址,如图3.2所示,最后把这段缓存放入缓存队列:080000005080000000080000001080000002080000003080000004010000004010000003010000002010000001010000000010000005VIDIOC_QUERYBUFmmap内核地址用户地址图3.2mmap函数地址传唤视频采集方式操作系统一般把系统使用的内存划分成用户空间和内核空间,分别由应用程序管理和操作系统管理。应用程序可以直接访问内存的地址,而内核空间存放的是供内核访问的代码和数据,用户不能直接访问。v412捕获的数据,最初是存放在内核空间的,这意味着用户不能直接访问该段内存,必须通过某些手段来转换地址。Linux系统下有三种视频采集方式:使用read、write方式,mmap内存映射方式和用户指针模式。read、write方式: 通过内核缓冲区来读取数据,在用户空间和内核空间不断拷贝数据,占用了大量用户内存空间,效率不高。mmap内存映射方式:mmap系统调用使得进程之间通过映射同一文件实现内存共享,访问时只需要指针而不用调用文件操作函数。通过把设备文件映射到内存中,加速了Io访问。这是一种有效的方式。上面的mmap函数就是使用这种方式。用户指针模式:内存片段由应用程序自己分配。这点需要在v412_ requestbuffers里将memory字段设置成V4L2_MEMORY_USERPTR.因此,本文在程序实现中采用了内存映射方式截取视频图像样,捕获到的视频数据被映射到内存区域,该映射内容区可读写并且可供不同进程共享。要对视频数据进行压缩等处理工作则可通过访问内存映射区域进行。3)处理采集数据V4L2有一个数据缓存,存放req.count数量的缓存数据。数据缓存采用FIFO的方式,当应用程序调用缓存数据时,缓存队列将最先采集到的视频数据缓存送出,并重新采集一张视频数据。这个过程需要用到两个ioctl命令,VIDIOC_DQBUF和VIDIOC_QBUF:struct v412_buffer buf;memset(&buf,O,sizeof(buf);buf.type=V4L2_BUF_TYPE_VIDEO_CAPATURE;buf.memory=V4L2_MEMORY_MMAP;buf.index=0:/读取缓存 if(ioctl(cameraFd,VIDIOC_dqbuf, &buf)= -1)return-1;/视频处理算法/重新放入缓存队列if(ioctl(cameraFd,VIDIOC_QBUF,&buf)=-1)return-l;4)关闭视频设备使用close函数关闭一个视频设备:close(cameraFd);本课题的视频采集图像效果,如图3.3示。313视频数据的存储由于保存文件是保存在USB硬盘上,也就是需要不停的读写I/O设备,这样的操作需要耗费大量的时间和资源,因此保存视频文件模块也是利用一个单独线程来实现以提高程序的执行效率。对于用户而言,存储的图像能达到记录的目的即可,对连续性的要求并不高,所以本系统以约10帧秒的速度进行存储,以此达到节省存储空间的目的。存储速率的控制是通过定时器来完成的。同样,此功能模块也有自己的循环缓冲区存放压缩后的视频数据,该线程不断从该缓冲区读取JPEG数据,通过调用avilib库的相关函数把这些视频数据保存为avi格式的文件。对于“avi格式文件,目前大多数播放器都能播放该格式的视频文件。32视频编码通过USB摄像头获取的视频图像数据量较大,而网络带宽有限,不适合网络实时传输,为了使视频图像在现有的网络上有较高的传输速率和较好的视频质量和有效的存储视频数据,需要将原始的视频图像进行压缩编码。321视频编码技术的选择传统的视频压缩编码都是以香农信息论为基础,用统计概率模型来描述信源,编码实体是像素或像素块。这种基于数理统计、旨在消除视频数据相关冗余的编码技术被称为第一代视频编码技术,JPEG、MP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 相声里的医患之道
- 电池制液工测试考核试卷及答案
- 动态检车员招聘考核试卷及答案
- 2025年债务保证担保业务操作流程合同范本
- 2025年新能源项目开发投资合同
- 衡器总装调试工专业知识考核试卷及答案
- 挤压模具工基础知识考核试卷及答案
- 药芯焊丝成型工质量管控考核试卷及答案
- 社区团购平台2025年运营管理与用户满意度提升研究报告
- 交通运输行业智能交通管理系统人才需求与培养模式研究报告
- 农村厨师安全培训课件
- 2025-2026学年人教版(2024)小学体育与健康三年级(全一册)教学设计(附目录P114)
- 轧钢安全规程培训课件
- 2025年下半年上海市新航社区服务总站招聘5人备考练习题库及答案解析
- 2025版防洪堤坝加固工程施工合同
- 2025年消防经济学试题及答案
- 2025-2026学年人教版(2024)小学美术三年级上册教学计划及进度表
- 2025年秋期新教材人音版三年级上册小学音乐教学计划+进度表
- 14.守望生命 课件 九年级上册《心理健康教育》(鲁教版)
- 2025年医院安全员安全技能测试
- 网络安全技术培训
评论
0/150
提交评论