视频监控系统将被监控现场的实时图像和数据等信息准确、清晰、快速地传送到监控中心服务器,监控中心将实时、直接地掌握各个被监控现场的当前情况(包括图像、声音及其他敏感数据),从而对敏感事件进行快速反应[1]。视频监控正朝着数字化、网络化、集成化的嵌入式视频监控方向蓬勃发展。相比传统的视频采集监控系统,嵌入式视频监控系统具有可靠性高、组网方便、可远程监控等优点,因而更适用于工业控制、银行、政府部门的安防系统中[2]。
本文设计了一种具有用户零维护、价格低廉、性能稳定等特点的嵌入式视频监控系统。该系统以ARM处理器S3C2440和嵌入式Linux操作系统为核心平台,通过USB摄像头采集视频数据,基于TCP/IP协议进行网络传输,用户通过浏览器即可监控远程视频,视频可以保存,以便回放。
1视频监控系统方案设计
1.1监控系统硬件平台设计
监控系统硬件平台是整个监控系统的基础,在系统设计中占有至关重要的地位,硬件选择的成功与否直接决定着系统功能的优劣。本设计中主要硬件有NANDFLASH、嵌入式处理器S3C2440、SDRAM、网卡、USB接口摄像头等。
视频监控系统的硬件结构方案如图1所示。系统以S3C2440处理器为核心,外扩其他外围设备。S3C2440处理器是SAMSUNG公司基于ARM公司的ARM920T处理器核,它是一款高度集成的芯片,主频为400MHz,提供了一套较完整的通用外围设备接口,支持性价比非常高的NANDFLASH启动,可支持Linux等多种操作系统的移植[3]。
1.2监控系统软件方案设计
本系统选择Linux操作系统作为软件开发平台,编译环境采用交叉编译调试的方式,嵌入式Linux的内核选用2.6.13,根文件系统采用yaffs。
一套完整的视频监控系统应该至少包含视频数据的采集、处理、传输、存储与控制等功能,为了很好地实现以上功能,本系统划分为三大功能模块:嵌入式流媒体服务器、嵌入式Web服务器和用户视频监控端。嵌入式流媒体服务器模块主要实现视频数据的采集、存储和传输等功能;嵌入式Web服务器模块负责处理监控端发来的请求并通过与浏览器的交互为用户提供监控平台;用户视频监控端模块实现对远程视频的实时监控,并且可以控制视频的亮度和对比度等。
2嵌入式流媒体服务器的实现
流媒体服务器模块的主要功能有视频采集、视频压缩、视频存储和视频传输。本系统采用中星微公司生产的ZC0301芯片的USB摄像头,ZC0301主要由五大功能模块组成,即系统控制、图像信号处理、次取样和水平扫描模块、JPEG编码器和USB设备控制[4]。采用该芯片的摄像头应用最广泛,方便购买和维护,经过此芯片处理后得到的是JPEG编码的位流,实现了视频的压缩。
2.1基于Video4 Linux的视频采集
Video4 Linux(简称“V4L”)是Linux中关于视频设备的内核驱动,它是针对视频设备的应用程序编程提供的一系统接口函数。视频采集的基本流程如图2所示。利用V4L对USB摄像头的编程需要用到Linux下2个系统调用,分别是ioctl()调用和mmap()调用。
在V4L标准中提供了多个数据结构和控制命令,程序通过调用函数对设备进行控制,完成视频采集的任务。ioctl()函数中主要的设备控制命令有:
(1)VIDIOCGCAP:获取采集设备基本信息,比如支持最大最小分辨率等;
(2)VIDIOCSPICT、VIDIOCGPICT:分别为设置和获取采集图像的各种属性;
(3)VIDIOCGMBUF:获取缓冲区信息,比如每帧大小、最多支持的帧数等;
(4)VIDIOCMCAPTURE:捕捉图像,获取图像信息;
(5)VIDIOCSYNC:等待采集一帧图像完毕。
应用程序获取摄像头采集的图像数据有两种方法,分别是read()(直接读取的方法)和mmap()(内存映射的方法)。mmap()系统调用使得进程之间通过映射同一个文件而实现内存共享,优点是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝,加速了I/O访问,本系统就采用此方法。(来源:维库开发网)