版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南文理学院课程设计报告课程名称: 嵌入式网络视频监控系统研究 专业班级: 通信工程12101班 学号(25位)学生姓名: 朱 攀 指导教师: 杨 智 完成时间: 2015年 6月 10日 报告成绩: 评阅意见: 评阅教师 日期 湖南文理学院制基于嵌入式的网络视频监控系统研究 关键词: 视频监控,嵌入式Linux,v41,RTPRTCP,嵌入式Web服务器设计目的 随着多媒体技术和网络技术的发展,及图像较之其他信息形式的直观性,视频监控业务得到了广泛的应用。据悉,世博会期间,为全面构建“社会防控体系”上海就于市区内安装20余万个监控摄像头。社会防控体系只是视频监控的应用之一,但这足以说明视频监
2、控市场规模之大。市场调查显示,2007年中国网络视频监控业务市场规模达到2636亿元人民币,预计2011年达到8661亿元人民币。未来3年之内,网络视频监控都将保持约38的年增长率,会有越来越多的视频监控系统采用完全数字化的技术,特别是在一些行业市场,如交通、城市监控、工业和零售业等等。此外,以数字化视频监控为基础的智能视频监控 技术也将获得长足的发展。视频监控系统主要用于完成现场点的数据采集、处理、实时监控等功能。传统的视频监控系统采用自动控制技术、计算机技术,并己广泛地应用于工业自动化、工业控制领域。然而,由于传统的视频监控系统没有或无法解决实时大数据量处理远程通信等问题,或者其成本等原因
3、,其应用受到很大的限制。随着网络通讯技术和图像压缩处理技术以及传输技术的快速发展,数字视频通信技术得到越来越广泛的应用,采用这些先进技术的网络视频监控系统开始逐渐替换传统的视频监控系统。借助以太网和Intemet技术,把嵌入式系统连接至Internet上,就可以方便、低廉的把信息传送到世界的任何一个地方,实现资源的共享,从而使人们有能力解决以前在极有限的资源下很难解决的问题,为远程网络视频监控系统的发展提供了有利的条件。由此可见,嵌入式网络视频监控系统必将有良好的应用和发展前景,由它替代当前普遍应用于PC的视频远程监控系统己成为必然趋势。而目前在我国基于嵌入式技术的网络化视频监控系统刚刚起步,
4、所以对基于嵌入式技术的网络视频监控系统进行研究极具现实意义。11视频监控的作用和目的 视觉是人类最重要的感觉,也是人类获取信息的主要来源。据统计,在人类从外界获取的信息中,有70以上来自视觉。图像与其他的信息形式相比,具有直观、具体、生动等诸多显著的特点。视频监控系统的发展大致经历了三个发展阶段1)模拟视频监控系统。主要是以模拟设备为主的闭路系统,称为第一代监控系统。2)数字监控系统。20世纪90年代中期,随着计算机处理能力的提高和视频技术的发展,计算机的高速数据处理能力被用来进行视频的采集和处理,这大大提高了图像质量,增强了视频监控能力。此为第二代视频监控系统。3)网络数字视频监控系统。现阶
5、段,嵌入式网络视频监测系统的解决方案主要有以下几种:1)视频采集芯片+DSP处理器。该方案中由视频采集芯片完成图像的预处理,由DSP完成图像的编码:基于H264或MPEG标准的压缩,经以太网网络输。方案的主要缺点是控制不够灵活,不适合作系统控制,因为通DSP通常没有强大的操作系统。2)DSP处理器+嵌入式处理器。该方案采用由DSP完成基于H264或MPEG标准的图像压缩,在嵌入式处理器上运行嵌入式操作系统,(如嵌入式Linux)进行系统控制和网络传输。方案的主要缺点是:由于有两个主要的芯片,设计、调试、使用较难,系统成本偏高。3)图像采集芯片+嵌入式处理器。该方案中,在嵌入式处理器上运行嵌入式
6、操作系统(如嵌入式Linux)进行系统控制和网络传输。方案的主要缺点是缺乏强大的图像处理能力,不能满足高实时性要求,但具有开发容易,成本低的优点。因此,本文采用基于图像采集芯片+嵌入式处理的方案来完成嵌入式网络视频监控系统的实现的。12设计要进行的工作1)针对ARMXscalepxa255处理器的EAX400平台设计基于Web的网络视频监控方案。2)针对EAX400平台,构建嵌入式交叉开发环境,移植Linux2627内核,创建文件系统。3)开发Linux下基于v41的视频采集程序,研究H264编码标准,并针对应用特点优化编码器。对采集和编码模块采用并发程序设计。4)研究RTPRTCP相关协议,
7、简化RTPRTCP分组的封装,简化实现RTSP协议,分析H264的网络传输标准,并优化H264的RTP封装策略,实现视频传输。5)构建嵌入式Web服务器,通过客户浏览器和视频服务器的交互来实现对服务器的相关设置,在客户端用浏览器调用VLC播放器进行系统监控测试。嵌入式视频监控系统的总体方案21嵌入式视频监控系统总体方案 嵌入式视频监控系统应用到了嵌入式技术、视频压缩技术和视频传输技术等多个方面,一个良好的总体方案设计是系统开发成功的关键。本章根据嵌入式系统的一般构成,给出了系统设计的总体方案,这包括硬件和软件两个部分。系统可分为硬件层、bootloader引导程序、操作系统层、应用软件层,整个
8、系统整体设计框架如图21所示,最终通过作为视频监控客户端PC机将能对监控现场实现实时监控。图2-1视频监控系统总体设计22嵌入式视频监控系统硬件 嵌入式微处理器是整个系统的核心,因此首先要确定系统的嵌入式微处理器。ARM(AdvancedRISCMachines)架构的微处理器具有体积小、低功耗、低成本、高性能等特点,因而在嵌入式领域得到广泛应用。嵌入式网络监控系统要求能够实时采集压缩视频数据并通过网络实时传输,数据运算量大对处理器要求高。本课题使用北京亿旗公司的EAX400嵌入式开发系统为硬件开发平台。EAX400嵌入式开发系统采用Intel公司Xscale系列的PXA255 CPU为核心处
9、理器图中各硬件模块的介绍如下:1)PXA255处理器 英特尔Xscale PXA255是基于Intel XScale微体系结构的Intel PCA处理器具有先进的集成功能、领先的多媒体性能和卓越的节电能力。XScale呋J核采用带有一个增强型存储器管道的超级流水线RISC处理器架构的体系结构。这款新型高性能、低功耗的微构架兼容ARMvSTE ISA指令集(不支持浮点指令集)。这种微构架在ARM核的周围提供了指令与数据存储器管理单元,指令、数据调试和JTAG单元以及协处理器接口,MAC协处理器和内核存储总线。PXA255性能比ARMl0内核更加优越,频率高达400MHz,内核扩充许多DSP指令极
10、大提高了多媒体处理能力,同时了提供LCD(液晶显示器)控制器、无线局域网(8021lb)、蓝牙、高速红外、USB等多种功能模块,其结构框图如图23所示。作为便携移动设备的首选嵌入式处理器,PXA255内核具有Intel最先进的动态电源管理术,可以根据处理器所执行的任务情况动态调整工作频率和多种节电模式,实现无与伦比的低功耗高性能的技术。PXA255处理器符合工业产品应用标准,符合工业上倡导的MIPSmV性能设计要求。这个处理器将一个复杂集成电路合成在块芯片上,采用IntclXsealeTM微结构体系框架,具有许多外围接口,功能强大。PXA255具有嵌入式处理器的优点,主要用于下一代高性能的Sm
11、artPhone、PDA的设计,支持多种流媒体格式、无线互联网存取以及其他边缘领先技术,同时还支持SeeureDigitalMMC和CompactFlash扩展技术为大数据量存储提供有效方案。2)存储系统 EAX-400嵌入式开发系统的存储子系统由可高速随机访问的RAM、非易失性的FLASH存储器组成,包括:64MByle SDRAM、32MByte NOR FLASH、32MByteNANDFLASH61。SDRAM采用韩国现代的HY57v561620cT-H芯片,每片容量为4Banks*4M*16Bit,共256MbR,32Mbyte。HY57V561620CT-H的位宽为16,EAX-4
12、00系统用两片拼接为32位宽度的64MIlyte RAM存储器。NOR FLASH采用的是美国Intel公司的SlrataFlash28F128J3,每片容量为16Mbym,芯片内部分为128块,每块128Kbyte。28F128J3的位宽也是16,EAX-400系统用两片拼接为32位宽度的32MbyteNOR FLASH存储器。NOR flash带有RAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节,NORflash的传输效率很高,读速度比NANDn础稍快一些。NORflash具有芯片内执行(xm eXecute InPlace)的特点,这样应用程序可以直接在flash芯
13、片内运行,不必再把代码读到系统RAM中。NORflash的不足是写堞除的速度太大慢于NAND flash,且价格较贵,擦除次数低于NAND flash,为10万次。EAX-400系统中NOR FLASH用于存茄Bootloader、Linux核及根文件系统。NAND FLASH采用韩国三星的K9F5608,每片容量为32Mbyte,位宽为8。NAND FLASH的优点是写擦除的速度快,价格低,能够复用指令、地址和数据总线,从而节省了引脚数量;能够利用同样的硬件设计和电路板,支持更大容量的NAND器件;NAND FLASH的擦除次数可达百万次。但它的缺点也是明显的:使用复杂的IO口来串行地存取数
14、据,且各个产品或厂商的方法可能各不相同。因此使用NAND器件时,必须有驱动程序支持,才能继续执行其他操作。NANDFLASH还会产生坏块和位交换(比特位发生反转)的现象,因此可靠性稍差3)网络接口 EAX400嵌入式开发系统外扩一个RJ45以太网接口。以太网控制器采用CIRRUSLOGIC公司的CS8900A,最大速率为10Mbps。通过双绞线可以实现网络通讯和数据传输功能。可以通过交叉网线同PC机连接或通过直联网线同集线器连接。4)USB接口 EAX一400嵌入式开发系统配有1个标准USB B型插座和2个标准USB A型插座。其中USB HOST采用Philips公司生产的ISPll61A1
15、 USB主机控制器。ISPl 161A1是一款可以支持主从模式的嵌入式USB控制器,支持两种传输模式:12Mbps全速传输模式和15Mbps低速传输模式。ISPll61A1遵循USB 11规范。5)其它接口 EAX400嵌入式开发系统具有三个外接的UART串口和一个GPRS通讯串口,其中PXA255处理器自身提供的FFUART(全功能UAI汀)可以通过交叉串口线同PC机进行通信,主要用于系统调试,作为Bootloader的信息输出口和Linux内核的控制台端口。EAX400嵌入式开发系统还有一个20针的JTAG调试口,可实现两个作用:连接ARM仿真器进行在线调试;连接JTAG下载线,直接对EA
16、X400开发系统的NOR FLASH进行烧写编程。23嵌入式视频监控系统软件231系统软件设计 鉴于嵌入式Linux的稳定性、强大的网络支持功能和完全免费的特性,本课题选取Linux作为系统软件平台。课题中选取最新的(本课题研究时)Linux2627内核版本来做移植。与Linux24相比,Linux26具有很多有利于嵌入式应用的新特性,如实时性能的增强,更方便的移植性、共享内存的改性和Io系统的改进等。构建嵌入式Linux系统的工作主要包括建立交叉编译环境、Bootloader移植、Linux内核移植、根文件系统的构建。232应用软件设计 系统的应用软件设计基于嵌入式Linux操作系统平台,应
17、用软件模块见图图2-4应用软件模块整个系统根据功能分为以下几个独立的模块:视频采集模块、图像压缩编码模块、视频传输模块、WEB服务器模块,各功能模块说明如下:1)视频采集模块。Linux下视频采集是通过V4L(Video For Linux)t。71来实现的,课题中使用的是Webeyev2000USB摄像头,它采集到的视频数据有RGB24和YUV420两种格式,这里取YUV420格式,以方便视频压缩模块对其进行直接处理。2)视频编码模块:经过采集模块获得的原始码流保存到缓冲区中,然后编码模块对该缓冲区码流进行H264格式的编码并负责交给传输模块。这里采用了多线程程序设计,采集模块和编码模块的同
18、步采用的生产者和消费者模型。3)视频传输模块:该模块对由编码模块产生的H264码流进行RTP格式的封装和传输。对传输质量的控制是通过利用RTCP反馈包信息实现的,这里对RTPRTCP协议进行了简化实现。4)服务器端会话模块:这个模块是通过建立Web服务器来实现的,W曲服务器通过HTTP协议与监控端浏览器软件进行信息交互,提供其他应用程序模块的接口以及视频数据浏览界面它包括会话建立、会话控制,也包括一些用户设置等。系统提供TRTSP8】会话模式,建立会话线程等待客户端的连接。嵌入式Linux系统构建 嵌入式linux是目前嵌入式系统中发展势头最猛的嵌入式操作系统,已经应用在多媒体设备、手持设备、
19、车载导航系统、智能手表、机械控制等领域中。这主要是因为嵌入Linux 操作系统具有以下的优势:1)Linux内核精简,各部分的功能明确,可扩展性强,容易剪裁。2)Linux上有丰富的驱动程序,支持各种主流硬件设备和最新的硬件技术,随着Linux的广泛应用,许多芯片厂家开始提供Linux上的驱动。31大小功能可以定制,Linux继承了UNIX的设计思想,内核与用户界面完全独立,各部分的可定制性都很强。4)Linux符合IEEE POSIX编程标准,有非常好的可移植性。它本身是UNIX系统的一种克隆,支持商业UNIX的全部功能,UNIX平台上众多的应用程序稍加修改就可以应用到嵌入式环境中Linux
20、平台。51强大的网络功能,Linux支持所有标准的因特网协议,几乎所有的协议和网络接口都定制在其中。6)很高的稳定性,Linux的内核是非常可靠和稳定的,并且由于内核的稳定性使得Linux在移植到特定平台后与通用平台一样具有高稳定性。31嵌入式Linux开发环境的建立 由于多数嵌入式目标系统未能提供足够的资源供编译过程使用,因而只好将编译工作转移到高性能的PC机中进行,这样就需要进行交叉编译。交叉编译本身在宿主机上进行,编译产生的二进制代码则运行于目标机上,一般把生成代码的平台称为宿主机,把执行代码的平台称为目标机。宿主机PC通过串口COMl、并口LPTl、以太网络接口与目标机EAX400嵌入
21、式开发系统的FFUART串口、JTAG口、以太网络接口分别连接。如图31所示。图31交叉开发的硬件连接图 本课题中宿主机安装的是Windows XP操作系统,宿主机的Linux环境是通过在虚拟机软件VMware中安装了Fedora Core 4提供的,在这上面主要进行编译工作,编译成功后拷贝到Windows系统,再经网络、串口等方式下载到目标机。这种交叉开发环境既可以同时工作在两种完全不同的操作系统平台,无需频繁地重启计算机进行系统切换,又具有真实Linux发行版的运行环境。课题中交叉工具链式是通过Crosstool开源软件项目建立的。Crosstool是一组脚本的结合,通过这些脚本,使得基于
22、GCC、GLIBC、LINUX的交叉开发工具链的创建能够自动执行。本课题使用的处理器是Intel公司设计生产的Xscale系列的PXA255,在制作交叉开发工具链时,使用的主脚本文件是demoarmxscalesh,其中的核心命令改为:evalcat armxscaledatgcc-401-glibc-235一hdrs-26112dat、sh a11sh一一notest,在等待了大约两个小时后,一套名为“annxscale1inuxgnu-"的交叉工具链就制作成功了。编译结束后,在$(RESULT TOP)目录下会新建一个目录gcc401glibc235,就是编译好的交叉工具链。将该
23、目录拷贝至Uusrlocal,再修改rootbashprofile文件,增加下列命令行:PATH=$PATH:$HOMEbin:usrlocalgcc-401一glibc一235arm-xscalelinuxgnubin保存退出后,在终端窗El执行命令:sourcerootbash profile至此,交叉工具链安装结束。以后使用这个工具链时,就不必指定绝对路径,系统会自动寻找到它。32 Bootloader的构建321 Bootloader的启动 从操作系统的角度看,BootLoader的总目标就是正确地调用内核来执行。BootLoader的启动过程大多数分为阶段l和阶段2。阶段1主要包含依
24、赖于CPU体系结构的硬件初始化代码,通常用汇编语言来实现的。这个阶段通常包括以下步骤1)硬件设备初始化。目的是为阶段2的执行以及随后内核的执行准备好基本的硬件环境。2)为加载BootLoader的阶段2准备RAM空间。为了获得更快的执行速度,通常把阶段2加载到删空间来执行。3)拷贝BootLoader阶段2的代码到洲空间中。设置好堆栈。4)跳转到阶段2的C程序入口点。BootLoader的阶段2通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。通常包括以下步骤:1)初始化本阶段要使用到的硬件设备。2)检测系统内存映射。3)将内核映像和根文件系统映像从Flash
25、上读到RAM空间中。4)为内核设置启动参数。5)调用内核。322 Bootloader的移植 EAX400嵌入式开发系统提供了已经移植好的blob作为Bootloader。同一个Bootloader,可以引导不同版本的内核。但因内核和根文件系统的下载与烧写是由blob直接读写Flash对应的偏移地址实现的,因此blob就决定了内核和根文件系统的存储起始地址和大小,它们与内核中对Flash的分区应相一致。由于后文所移植的Linux2627内核映像大小超过了现有blob所允许的内核大d、(1MByte),所以要对blob中有关内核和根文件系统的存储起始地址和大小的代码作相应的改动。在EAX一400
26、嵌入式开发系统中,Nor Flash有32M Byte。内核映像最大可以到2M,根文件系统相应地从新起始地址开始存放。要注意在Linux移植时,对Flash的分区要与此相对应,才能使Linux系统正确运行。33 Linux2627内核的移植 本课题使用从Linux官网上下载的最新版本Linux内核linux2627tarbz2来进行移植Linux内核源码非常庞大,其顶层有许多子目录,简要说明如表33。表3-3 Linux内核源码顶层目录说明1)选择参考板 在配置界面中,System Type->ARM system type所选的是“PXA2xxbased”,即选择了基于ARM体系结构的
27、Intel公司的Xscale系列处理器“PXA2xx”。此时,在SystemType·>IntelPXA2xxImplementations一>Select targetboard子菜单下,有六个选项可供选择,表明Linux 2627支持六种采用“PXA2xx处理器的目标板。Intel DBPXA250Development PlatfoI-in,又称为Intel PXA250 Lubbock开发板(后面简称为LUBBOCK板),它支持Intel推出的基于Xscale微架构的系列处理器,如应用处理器PXA21 0、PXA250、PXA255、PXA263,网络处理器IXP
28、420、IXP421、IXP422等271。其主要特点是提供了插卡式的处理器和闪存以方便重新配置开发板,并且它的可扩展底盘能实现所有开发板的特征。LUBBOCK板主要集成部件有:OIntel PXA255 400MHzCPU64MbytesSDRAM32MbytesBoot ROM32MbytesFlashMemory一组IntelSA1l1l芯片组,包括PCMCIA、CF卡、USB Host的插槽标准MicrosystemsLAN91C96以太网控制器其他部件等2)编译测试参考板的Linux内核使用LUBBOCK参考板的默认内核配置文件archarmconfigslubbock_defcon
29、fig,执行命令“make lubbock_defconfig gconfig”,会在Linux内核源码的顶层目录下生成LUBBOCK参考板的默认配置文件“config”,同时进入图形配置界面。在配置界面中,将Bootoptions>Defaultkernel commandstring子菜单项设为:root=devmtdblock2刑console-ttyS0,l15200 mem=64M 上面的命令行定义了三个参数,告知Linux内核,目标板的根文件系统保存在MTD设备的第三个分区(与在blob中对Flash的分区及分区用途相一致);控制台是ttyS0,速率为115200bps;目标
30、板内存共有64M Byte。设置完成后保存退出。再执行命令“make zlmage”编译内核,结束后,在archarmboot目录下生成目标映像文件zlmage。通过目标板的Bootloader-blob,将这个zlmage下载并烧写到目标板的NorFlash中。3)分析参考板代码并进行移植通过前面的理论分析与准备,现在可以开始实际的移植工作了。具体步骤如下:(1)添加目标板支持选项 平台支持选项是在arch目录中实现的。对于具体的ARM平台是在archarm目录中的kconfig文件中实现的。这个kconfig文件是内核的主配置文件,从中可以找到在内核配置的界面中出现的“System Typ
31、e”菜单项。由于Linux内核对基于PXA2xx的系列处理器已经有支持,所以无需修改。(2)添加Nor Flash存储器的访问映射驱动选项 CFI(common flash interface)规范由Intel、AMD及其他Flash器件制造商开发,用来提供一种探测Flash器件容量的通用方式。本课题使用的硬件平台中Nor Flash存储器符合该标准。添加这一选项,是为了提供一个“映射”驱动,从而允许Nor Flash的驱动代码与被物理地映射到CPU存储空间的芯片通信。具体工作是修改driversmtdmapk config文件,增加新的配置符号MTDEES255-config MTD_EES
32、255tristate”CFI Flash device mapped on PXA255一based EES255 board”depends onARCH-PXAEES255&&MTDCFI一1NTELEXT&&MTDPARTITIONShelpThis provides a driver for the on-board flash of the EFLAG COLtdEES255experimentalboard for educmi on(3)增加新的机器类型号在archarmtoolsmach-types文件中新增一行,作为本课题目标机EAX400在
33、Linux 2627中的机器类型号:#machineisxxxCONFIGxxxxMACHTYPExxxnumberees255ARCHPXAEES255EES2551232上列文本中,第一行是注释,说明各个字段的用途。(4)基于LUBBOCK板的实现文件,进行复制改名,作为新的EAX400的实现文件的模板,如表3-4所示:表3-4需复制改名的文件清单列表LUBBOCK板的实现文件EAX400的实现文件模板archarmmachpx“lubbockCarcharmroach·pxamypxa255Carcharmmach-pxaleds·lubbockcarcharmmac
34、h-pxaleds-mypxa255cdriversmtdmapslubboek-flashcdriversmtdmapsmypxa255一flashcdriverspcmciapxa2xxlubbockCdriverspcmciapxa2xx_mypxa255cincludeasm-armarchpxalubbockhincludeasm-armarchpxamypxa255h34根文件系统的构建341 FHS目录结构则 Linux操作系统是一个开源的项目,来自于全世界的Linux爱好者都可以查看、修改、改进、完善它的代码,然后通过一定的途径提交自己的工作成果,为Linux的发展作出贡献。正
35、是这种机制使得Linux成为稳定性、安全性非常好的一个操作系统。342 JFFS2根文件系统的构建 根文件系统一直都是所有Linux系统不可缺少的主件,它的结构深受Unix发展的影响。用来建立根文件系统的”正式”规则在文章FHS(Filesystem HierarchyStandard)中提到,我们应该遵照公认的标准来组织各个部件,由此产生可用的根文件系统对于嵌入式系统而言,为多用户提供可扩展环境的所有目录(例如home、mnt、opt和root)都可以省略。在调整根文件系统的时候,甚至可以进一步移除目录tmp和var,不过这么做可能会危害到某些软件的运行。因此一般不采用这种过于简化的方法。根
36、据引导加载程序和它的配置情况,可能不需要boot目录。这取决于引导加载程序是否在内核被启动之前从根文件系统取回内核镜像,在实际应用中,Bootloader不会访问任何文件系统。其余的目录,bin、dev、ete、lib、proc、sbin署llusr,都是不可缺少的。下面简单介绍根文件系统的制作方法【15J:1使用busybox来生成根文件系统需要的命令,会生成bin、sbin和linuxrc="个文件夹。2根据自己的需要在mnt、root、var、tmp、proe、boot、etc、lib、dev每个文件夹下面建立相应的文件,这里就不做详细说明。把所有的这些文件夹放在一个文件下面,
37、我放在tmp下面3使用mkfsjffs2I具制作根文件系统镜像文件,如下:mkfsjffs2_rmnte 261244一P-Omy_rootfsjffs24将根文件系统的镜像文件my_rootfsjffs2在blobqb通过tftp下载到EAX·400开发箱的flash中。到此整个嵌入式Linux系统已构建完成。视频数据采集和H264视频编码实现41 L i nux下的视频数据采集 本课题使用webeyev2000 USB摄像头进行视频数据采集,它采用的是OV511芯片,Linux系统对它提供了很好的支持。在Linux系统下进行视频图像采集需加载V4L(VideoforLinux)模
38、块、USB驱动模块和0V51l设备驱动模块。具体过程在Linux内核的移植和裁剪过程中进行。411视频采集程序开发中的关键系统调用 利用V4L对USB摄像头的编程需要两个很重要的系统调用,分别是ioctl0调用和mmap()调用【15J,下面对其做简要的介绍。1)ioctl0调用ioctl是inputoutputcontrol的缩写。ioctl系统调用的功能就是通过打开的文件描述符对各种文件尤其是字符设备文件进行控制,完成特定的IO操作。V4L支持的ioctl命令大概有二十几个,在应用中主要用到的是表41几个命令:表4-1 V4L支持的ioct1的主要控制命令函数功能ioctl(fd,VIDI
39、OCGCAP,&capability)获取采集设备的基本功能信息loctl(fd,VIDIOCSPICT,&picture)设置采集图象的各种属性ioctl(fd,VIDIOCGPICT,&picture)获取采集图象的各种属性ioctl(fd,VIDlOCGMBUF,*mbuf)获取缓冲区信息ioctl(fd,VIDIOCMCAPTURE,&mmap)捕捉图像,获取图像信息ioctl(fd,VlDIoCSYNC,&frame)等待捕获完改19贞图像2)mmap调用mmap调用的功能是实现内存映射,即将指定文件或对象的一部分映射到内存中去。这样可以通过访
40、问特定的内存区域来直接对文件或对象进行存取。与read和write调用相比,这种I0方式的效率要高得多。对持续采集大量图像数据的摄像头来说,用mmap的内存映射方式来传送数据,更能体现效率。mmap调用的格式是:void幸mmap(void*start,size_t length,int prot,int flags,intfd,ofr toffset)。其中,参数fd是被映射到内存文件的描述符;start指向欲对应的内存起始地址;length为映射到内存的文件大小;offset为目标文件中被映射部分起始点距文件开头的偏移量;mmap调用成功后,其返回值就是指向内存映射区域的指针,该内存区域的
41、大小就是由length参数指定的字节长度,接着应用程序就可以对该区域进行存取操作。412基于V4L视频采集的实现利用V4L采集视频的流程图如图41所示。图4-1 V4L视频采集流程图流程图详细说明各个步骤及主要所用到得函数如下。1)打开视频设备。intfd;fd=open(char木dev,ORDWR);USB摄像头在Linux中的设备文件名为devvide00,即dev='devvide00”。2)获取设备视频设备参数。structvideo_capability cap;ioctl(fd,VIDIOCGCAP,&cap);这里利用VIDIOCGCAP命令来来读取视频设备文件
42、的性能参数,包括设备名称、支持的最大最小分辨率,信号源的信息等,并放到video_capability结构变量里面。3)设定图像属性参数。structvideo_picture pic;structvideo_windowwin;ioctl(fd,VIDIOCGPICT,&pic);ioctl(cam,VIDIOCGWIN,&谢n);4)初始化内存映射。内存映射主要是设置结构体video mmap值,并初始化video mbuf,以获得所映射的buffer信息,然后用mmap将设备文件映射到内存。structvideo_mmap mmap;mmapwidth=WIDTH;图像宽
43、度为176mmapheight=HEIGHT;像高度为144mmapformat=picpalette;structvideo_mbufmbuf;ioctl(fd,VIDIOCGMBUF,&mbuf);unsignedchar木map=(unsignedchar水)mmap(O,mbufsize,PROT_READIPROTWRITE,MAP_SHARED,cam,0);5)开始采集。ioctl(fd,VIDl0CMCAPTUI己E,&mmap);ioctl(fd,VIDIOCSYNC,&frame);#检查flame号图像采集是否完成6)撤销内存映射并关闭摄像头。mu
44、nmap(mmap,mbufsize木2);intclose(int fd);嵌入式流媒体服务器的设计与实现 监控系统处于动态监视时,客户端需要实时查看监视图像,所以监视终端要实时发送监控图像。因此,视频数据经编码压缩模块处理后要将数据送入发送子模块进行打包发送,另外创建视频打包发送线程,编码子模块像视频采集模块一样也采用双缓冲区,即视频压缩线程和视频发送线程也要利用生产者。消费者模型进行同步操作。 由于监控系统对视频数据的传输延迟比较敏感,所以不宜采用TCP作为传输协议,因为TCP建立时需要3次握手的过程,从而导致了较大的时延;如果使用UDP,虽然它的传输时延较小,但是UDP本身又不提供任何
45、QoS(QualityofService)保证,因此本文中采用传输实时视频数据常用的实时传输协议(RTP)和实时传输控制协议(RTCP)配合使用提供视频数据实时传输和QoS服务。此外还会话层用到了实时流协议(RTSP)。51流媒体协议栈本课题中流媒体协议栈如图51所示图5-1流媒体协议栈的结构图其中,RTPRTCP主要是用来传输视频数据并根据网络状况来调整编码和发送速率,RTSP主要是起到会话连接作用。511 RTP协议 实时传输协议RTP(Realtime Transport Protoc01)是针对Internet上多媒体数据流的一个传输协议,由IETF(Internet Engineer
46、ing Task Force)作为RFCl889发布,现在最新的为RFC3550。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP的典型应用建立在UDP上,但也可以在TCP等其他协议之上工作。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。RTP负责对流媒体数据进行封包【291并实现媒体流的实时传输,即它按照RTP数据包格式来封装流媒体数据【30l,并利用与它绑定的协议进行数据包的传输;RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流
47、量控制或拥塞控制,它依靠RTCP提供这些服务。512 RTCP协议 实时传输控制协议RTCP【3l】(RealtimeTransportControl Protoc01):负责流媒体传输质量控制,在会话成员之间交换控制信息,提供流量控制和拥塞控制,通过接收这些控制数据包,从中获取会话参与者的信息,以及网络状况、分组丢失概率等反馈信息,从而能够对服务质量进行控制或者对网络状况进行判断。RTCP协议的功能是通过不同的RTCP数据报文来实现的,主要有如下几种类型:SR(Sender Report)发送端报告,所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。RR(Recei
48、ver Report)接收端报告,所谓接收端是指仅接收但不发送RTP数据报的应用程序或者终端。SDES源描述,主要功能是作为会话成员有关标识信息载体,如用户名、邮件地址等,此外还具有向会话成员传达会话控制信息的功能。BYE通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自己将退出会话。APP由应用程序自己定义,解决了RTCP的扩展性问题,并且为协议的实现者提供了很大的灵活性。52 RTPRTCP协议的简化实现 RTPRTCP协议是mTF为所有网络实时流媒体应用定制的协议框架,具体应用应该以此为参照,增加框架中没有涉及而应用中需要的功能,同时对于其中不适合应用要求的部分做
49、出适当删改,最终实现能最佳满足需求的协议。嵌入式系统对传输协议最重要的要求就是少占用带宽和减少时延。因此传输协议在传送流媒体数据时,只具备完成传输而必不可少的功能,同时简化协议中处理分组的过程,从而提高协议的实时性和高效性133。521 RTP分组格式及简化 RTP数据分组由固定的RTP数据头,一个可能空的作用资源表和有效载荷数据(payload,如实时的音频或视频压缩编码后的数据)组成。标准的R曙包·版本(V,2bit):这个域标识RTP的版本。RFC3550定义的版本是2。·填充位(P,lbit):表明有一个或多个不是载荷数据的填充字节在包尾,最后一个填充字节包含了填充
50、字节的个数。填充位用于某些固定块大小的加密算法,或者表示在一个下层协议包中包含的RTP包的数目。扩展位(X,lbit):在固定头后面接着一个扩展头。扩展机制能够应用于传递控制信息,而不需要中间节点的解释。CSRC源记数(CC,4bit):CSRC是在固定报头后CSRC标识符的数目。这个数值用于来支持混合器的“混合”功能。混合器从多个信源收集多媒体流,把它们合并成为一个包,然后转发到目的地。标记位(M,lbit):标记的解释是由配置来定义的。它可以用来在数据流中标记重要事件,比如帧边界。CC(contributing sources参与源)域以及CSRC(contributing sources
51、ID,参与源标识)域:RTP标准规定,一般一个RTP报文中,能够加入15个以内的CSRC。CSRC主要用于实时数据混和的场合。简化协议中帧的设计原则就是只保留本环境所需的功能,而不实现未使用的功能,同时也保留一定的可扩展性。因而将标准帧的P、X、CC三域合并为unused域,可以为今后的升级预留一定的资源,使新的版本可以兼容旧的版本。522RTCP分组格式及简化在本文中,由于只是一个服务器,因此在具体的RTCP实现时,采用SR和SDES控制包,其他包不做考虑。1)SR报文SR报文由RTCP公共报头、发送者信息和接收者报告块组成。如图54所示。49图5-4 SR报文格式(1)RTCP公共报头部分
52、·V:版本号,2bit,当前版本为2;·P:填充标志,lbit,如果填充标志为1,则在单一报文中尾部填充八位组:·RC:接收报告计数,5bit,指出接收报告的块的个数;·PT:报文类型,8bi t,SR类型为200;·Length:报文长度,16bit,RTCP手IE文长度减l,包括报头和填充,以32位为单位;SSRC标识符:32bit,发送该S时艮文的同步信源标识符。(2)发送者信息部分NTP时戳:64bit,指出该SR报文发送时的全局网络时间;RTP时戳:32bit,和NTP时戮一致的时间,但必须和RTP报文中的时戳保持相同的时间单位;发送
53、者报文计数:32bi t,发送者从开始传送RTP报文到该SR报文产生的时间间隔内共发送的RTP报文总数;发送者有效载荷字节计数:32bit,发送者从开始传送RTP报文到该SR报文产生的时间间隔内共发送的有效载荷总数,字节为单位。(3)接收报告块部分同步信源标识符(SSRC_n):32bit,标识最近传输间隔内曾向本机发送过RTP报文的同步信源,本机通过接收报告块向此SSRC_n反馈接受信息;丢失率:8bit,在最近传输间隔内,从SSRCn接收到的RTP报文丢失率;报文丢失累计:24bit,开始接收到现在,从SSRC_n接收RTP报文累计丢失数2)源描述I玎CP包(SDES)SDES由头与数据块
54、组成,数据块可以没有,也可有多个,组成项描述块所表明的源。简化的SDES包如图56所示:图5-6简化的SDES包格式简化包格式未采用SDES标准包中的P域、并且只保留了CNAME:规范终端标识SDES项。53实时流协议RTSP的简化实现531 RTSP协议简介 实时流协议RTSP35l(RealTimeStreamingProtoc01)是由RealNetworks和Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP协议用于控制多媒体流的传输,是流技术的关键协议之一,它能够实现VCR控制的所有功能,能够对流媒体服务器实施网络远程控制。RTSP在
55、体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。RTSP也提供了基于RTP传输机制的一些有效的方法。532RTSP消息交互过程及简化实现1)RTSP的消息RTSP的消息有两大类,一是请求消息(request),一是回应消亩,(response),两种消息的格式不同。请求消息:方法URI RTSP版本CR LF消息头CR LFCR LF消息体CR LF其中方法包括OPTIONS回应中所有的命令,URI是接收方的地址2)简单的rtsp交互过程C表示RTSP客户端,S表示RTSP服务端。(1)C一>S:OPTIONS request询问S有哪些方法可用(1)S->C:OPTIONS responseS回应信息中包括提供的所有可用方法(2)C->S:DESCRIBErequest要求得到S提供的媒体初始化描述信息(2)S->C:DESC对BE respo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成品笼体就近堆放减少二次转运损耗
- 吊装辅助夹具使用操作规范
- 【2026年9月】大学新生开学收心主题班会课件-新学期收心归位
- 外墙面砖上浇下贴工艺安全技术交底
- 2026年7月手足口病院内防控培训试题及答案
- 新生儿全胃肠外营养护理查房
- 急诊冻伤护理查房
- 2025年市场营销经理绩效评估考试试题及答案解析
- 2026年中考数学真题分类:方程与不等式专项训练试卷
- 中西医结合医院PICC导管维护工作坊理论考核试题及答案
- 2026年秋季小学道德与法治六年级上册(新教材)教学计划附进度表
- 2026秋人教PEP六年级上册英语(新改版)全册教案
- 教师节主题班会:浓浓尊师意拳拳感恩心
- 新版部编人教版六年级上册道德与法治(课件)第3课 宪法是根本法
- 2026小学教科版四年级科学上册全册教案
- 2026-2030中国移动球幕影院行业市场现状分析及竞争格局与投资发展研究报告
- 测绘工程施工方案
- 26秋 语文一年级上册彩色课课贴
- 2026年主要负责人《金属冶炼(黑色金属铸造)》安全生产模拟考试题
- 潍柴雷沃线上测评题
- 《地理信息系统概论》教案
评论
0/150
提交评论