兰西源码网

兰西源码网

当前位置: 服务器类

基于嵌入式ARM的移动视频监控系统设计

时间:2021-09-13来源:swan 作者:poijfcU 点击:

0引言

本文引用地址:

传统的视频监控系统一般采用PC服务器的C/S(Client/Server)结构,视频服务器由计算主机和许多存放视频的磁盘陈列组成,专门用于视频的存储和传输。流式传输采用的是边接收边播放的原则,这需要将多媒体的编、解码和传输技术很好地结合在一起。目前多媒体的编解码技术如MPEG-4,H.264等,可以以较小的带宽开销来实现较高质量的视频传输,然而目前的传输技术却无法满足移动视频监控的需求,因为设备的移动速度和所在位置都会严重影响到传输。传统流媒体系统体积大、成本高、可靠性低且移植性差,不能满足这种特殊场合的应用要求。

针对传统监控技术的不足,本文提出了基于ARM的移动观频监控的设计与实现,设计了一种专门功能、结构简单的流媒体服务器;采用Boa作为Web服务器,并通过浏览器来监控,实现跨平台监视;采用双缓冲技术,确保用户能够得到较好、较稳定的播放质量;利用USB无线网卡实现无线上网,免去布线的烦恼,方便地实现了移动视频监控的功能。

1系统硬件设计

硬件平台是整个系统运作的基础。本系统主要由流媒体服务单元、USB无线网卡、无线路由、摄像头和监控端组成。流媒体服务单元是整个系统的核心,主要由嵌入式Linux、嵌入式处理器和外围器件组成。

嵌入式处理器采用IntelXScale结构的PXA27嵌入式微处理器,最高主频可达624MHz;加入wirelessMMX技术,大大提升了多媒体处理能力;加入IntelSpeedStep动态管理电源技术,在保证CPU性能的情况下,最大限度地降底移动设备的功耗。在处理器丰富资源的基础上,本系统扩展了64MBNandFLASH,64MBSDRAM,16MBNorFLASH,4个USB主接口以及一个从接口。USB一主接口接摄像头,用于采集视频数据;USB一主接口接无线网卡,用于发送视频数据。无线网卡采用了TCP/IP、NETBEUI传输协议,传输速率为11Mb/s,5.5Mb/s,2Mb/s,1Mb/s。其最大覆盖范围为35~100m(室内)、100~300m(室外),能较好地满足移动视频监控的要求。本系统硬件组成图如图1所示。

以PXA270为核心接收摄像头采集到的视频数据,经过编码后通过无线网卡发送,再经由无线路由接入以太网,用户通过Internet接收到视频信息。

2USB无线网卡驱动

在Linux系统中,提供了主机侧和设备侧视角的USB驱动框架。从主机侧角度而言,需要编写的USB驱动程序包括主机控制器驱动和设备驱动两大类。主机控制器驱动程序属于USB驱动程序的核心,这部分在Linux内核源码中已经有很好的支持。本节将重点介绍USB无线网卡设备驱动的实现。

2.1USB驱动的注册和注销

usb_ids描述了这个USB驱动所支持的USB设备列表。

2.2探测和断开函数

在编写USB无线网卡设备驱动时,很重要的一步是probe()和disconnect()函数,即探测和断开函数,它们分别在设备**入和拔出的时候被调用,用于初始化和释放硬件资源。

2.3USB请求块(URB)

USB无线网卡本身的驱动部分的读写等操作流程有其特殊性,即以USB请求块(URB)来贯穿始终。URB是USB主机与无线网卡设备通信的电波。

3系统软件设计

基于ARM的移动视频监控的软件设计包括嵌入式Linux系统开发环境的搭建与移动视频监控软件设计两大部分。

本方案采用了Linux嵌入式操作系统,以Linux2.6.24为基础进行裁减定制自己的内核,在编译内核时保留必须的文件系统、存储器、串口、USB、以太网驱动,将摄像头、USB无线网卡驱动以模块的形式编译,以减少编译后内核的大小。Bootloader采用blob,烧写blob后利用tftp协议实现Linux内核和文件系统在Flash上的烧写。在Redhat9安装Arm-linux-gcc。建立交叉编译环境,实现流媒体服务器和Boa在PAX270上的搭建。鉴于现在烧写技术已经很成熟,故不详细讨论。

3.2移动视频监控软件的设计

移动视频监控软件完成的主要功能有:设计流媒体服务器采集并传输摄像头拍摄的视频信息;构建嵌入式Web服务器Boa;动态网页的设计以及流媒体服务器、web服务器与浏览器之间的通信等任务。因此系统软件框架如图2所示。

3.2.1流媒体服务器的设计

流媒体服务器主程序用于开放某个视频服务器端口,并不断监听端口,如有连接请求则建立连接,建立后流媒体服务进程将不断向端口提供采集到的视频数据流同时也接收客户端发送过来的视频调节命令参数。流媒体服务器主程序流程图如图3所示。

(1)采集视频数据

系统是在嵌入式Linux系统平台上采用Video4Linux编程来采集视频的。一般摄像头是直接读视频设备,采集到视频数据并存在文件中。对文件进行操作,这样程序运行效率会很低。本系统摒弃这种方法,采用mmap(内存映射)方式截取视频数据。mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。

摄像头相关文章:摄像头原理


------分隔线----------------------------
栏目列表

推荐内容
热点内容