詹一佳,邓本再,曹宇杰
(长沙理工大学 电气与信息工程学院,湖南 长沙 410114)
伴随电子信息技术,网络技术及多媒体技术的快速发展,嵌入式无线视频监控技术也在不断的飞速发展。视频监控系统正在向数字化、网络化和集成化方向发展,因此研究基于嵌入式的视频监控系统是必要的。基于嵌入式的无线视频监控是以高性能处理器为核心,控制外围部件进行视频采集和压缩编码,再将视频流以无线的方式发送到中断进行存储显示。与其他监控系统相比,利用嵌入式技术的无线视频监控系统易安装,体积小,可以实现无人值守,对于各种特殊场合需求的视频监控能够满足应用要求。
钱华明[1]等人提出了一种基于S3C2410硬件平台和嵌入式Linux操作系统,将采集的视频数据进行MPEG-4编码,再通过CDMA模块,完成无线网络视频传输。涂继辉[2]等人提出了以高性能ARM9芯片作微处理器,通过嵌入式Linux采集USB摄像头视频数据,经MJPEG-4压缩,通过2.4 GHz无线发送/接受模块实现无线视频监控。张伟男[3]等人提出了一种基于3G无线网络传输的移动视频监控系统的方案,实现了实时监控的功能。
为了实现室内视频监控系统的网络传输,在保证传输稳定和多用户的需求前提下,本文选取了主频更高的ARM11作为处理器,以802.11g的无线局域网和Mjpg-streamer视频服务器为传输媒介的无线视频监控系统[4-8]。
微处理器是系统硬件的核心,考虑到ARM低功耗、低成本、高性能等特点,本文采用ARM11 S3C6410微处理器为核心的飞凌OK6410开发板,S3C6410是一款高性能32位的RISC微处理器,主频高达667 MHz,它采用64/32位内部总线架构,具有视频处理、二维图形显示和缩放等硬件加速器功能。该开发板有256MB DDR和2 GB NAND FLASH,CPU内部集成SDRAM控制器、32通道DMA、4通道UART、SD接口、USB接口及以太网接口等,为各种应用开发提供了强大的支持。系统硬件架构图如图1所示。
图1 系统硬件架构图Fig.1 Architecture diagram of system hardware
OK6410有1个CMOS摄像头接口,但由于摄像头只能固定在开发板上,不便于安装和放置,故本设计采用USB摄像头。考虑到成本问题,摄像头选用天敏10moons,经测试该设备可以用于OK6410开发板上,且输出YUV格式的视频帧数据。
本设计使用的WIFI模块为飞凌公司自行设计生产的,接口为2.0间距的双排插孔“CN4”,主芯片型号为“WM-G-MR-09”。在连无线网络之前,先关闭DM9000网卡,再启动SDIO WIFI,命令分别为:ifconfig eth0 down 和 ifconfig wlan0 up。
软件设计包括嵌入式操作平台的搭建以及视频服务器软件的移植。为此,首先搭建嵌入式交叉编译环境。Ubuntu是一个以桌面应用为主的Linux操作系统,且具有安装系统简单和图形界面人性化特点,故选用Ubuntu 12.04为宿主机电脑操作系统。交叉编译器选择arm-linux-gcc 4.3.2版本。
现阶段主流的嵌入式操作系统有Linux、WinCE和uC/OS-II,其中Linux以其充分的开源性和良好的可移植性被广泛使用,此次设计选取Linux 3.0.1版本的系统[9]。
2.1.1 内核的裁剪与移植
内核的裁剪就是对各个功能进行裁剪,选取满足特定平台和需求的功能。Linux内核采用模块化设计,并且各个模块源码以文件目录的形式存放,在对内核的裁剪和编译时非常方便。
1)USB摄像头驱动模块的添加
进入内核文件目录,执行make menuconfig命令,进入Linux内核配置界面一次选择Device Drivers->Multimedia devices->Video For Linux->Video capture adapters->V4L USB devices->USB Video Class(UVC)->UVC input events device support将USB摄像头驱动编译进内核。
2)SDIO WIFI驱动模块的加载
系统的通信方式采用的是无线传输,由于这是系统的基本功能,可以采用将无线网卡驱动直接编译进内核的方式来实现。具体过程如下:
进入Linux内核配置主界面后,首先配置网络支持:Networking support->Wireless,然后配置网卡驱动支持:Device Driver->Network device->Wireless LAN->Wireless LAN(IEEE 802.11),最后配置SD HOST驱动支持:Device Driver->MMC/SD/SDIO card support。
对内核配置完成后,使用make zImage指令编译Linux内核,将生成可引导的、压缩的zImage映像文件,可直接烧写到开发板。
2.1.2 引导加载程序Bootloader的移植
Bootloader是操作系统运行前执行的一段小程序,在对系统硬件进行初始化,完成内存空间映射表的建立等操作后,实现对操作系统的加载。常用的Bootloader种类主要有:RedBoot、ARMboot、Vivi、U-Boot和 Blob 等。 由于 U-boot的开源性,以及多功能、灵活性强,支持多种平台的特点,使其在多种平台上得到了普遍的采用,本设计也使用U-Boot来引导系统的启动。
2.1.3 根文件系统的移植
文件系统是操作系统在磁盘上组织文件的方法,通过使用文件系统,用户可以对数据进行透明且有效地存取和访问。Linux根文件系统通常包含如图所示的目录结构:
Yaffs是第一个专门为Nandflash存储介质而设计的嵌入式文件系统,yaffs有很好的鲁棒性,对启动时间和RAM使用都做了优化,加快了文件系统的加载和访问速度。故本文用yaffs作为根文件系统。
2.1.4 一键烧写Linux
OK6410支持一键烧写,就是借助SD卡、系统映像和烧写工具,通过一系列的操作,非常迅速地烧写Linux到开发板的Nandflash中。具体步骤如下:
1)将SD卡格式化为FAT32格式,通过SD_Writer.exe将mmc.bin烧写到SD卡中;
2)将U-Boot、zImage和yaffs2文件拷贝到SD卡中;
3)将SD卡插入开发板,拨动开发板的拨码开关,设置为SD卡启动;
4)设置DNW串口,给开发板上电,等待5分钟左右即可;
5)断电,将拨码开关设置为Nandflash启动,重新启动电源,便完成系统烧写。
Mjpg-streamer是一个视频流应用软件,使用V4L2(Video 4 Linux 2)的接口,通过文件或HTTP方式访问linux-UVC兼容摄像头。视频采集功能通过调用mmap()函数将视频采集设备映射到系统内存中来实现,取代了传统的直接读取用户空间设备的方式,绕过了内核缓冲区,加快了视频数据的处理速度,提高了实时性。
Mjpg-streamer支持使用摄像头内的DSP硬件压缩功能付出少量硬件压缩时的电源开销,减少了CPU的负荷,减少带宽的占用,特别适用于嵌入式设备。
Mjpg-streamer采用模块化的设计方法,以功能块,即plug-in(组件)为单位进行描述。Mjpg-streamer的工作就是将其中的一个输入组件和多个输出组件绑定在一起,所有的功能都是通过它的各个组件完成的。用户可以选择需要的模块,并进行必要修改,以完成所需功能。体系结构如图2所示。
插件最主要且最常用的组件是input-uvc输入组件和output_http输出组件。其他组件包括input_control、input_file、input_testpicture、input_gspcav1、output_autofocus、output_file、out_viewer,如图 3所示。
2.2.1 input_uvc输入组件
图2 Mjpg-streamer体系结构层次图Fig.2 Mjpg-streamer system structure diagram
图3 Mjpg-streamer的组件体系Fig.3 The components of Mjpg-streamer system
Input_uvc组件的主要功能是获取摄像头拍摄的图像并将其压缩编码,共包括5个组件接口函数,这些组件接口函数是各个组件提供给外部使用的接口。相关函数的定义可查看input_uvc.c文件。
Output_http输出插件是功能齐全的HTTP 1.0的web服务器,通过输入插件获取的USB摄像头图像数据处理之后以流媒体的形式输出,并可为设置用户名和密码,最终在其客户端浏览器显示。
2.2.2 mjpg-streamer视频服务器的移植
Mjpg-streamer的移植需要JPEG库的支持,所以首先需要移植JPEG库到开发板。从http://www.ijg.org/files/下载jpeg源码包,解压缩后进入其目录,在源码包目录执行./configure CC=arm-linux-gcc–host=arm-unknown-linux–prefix=/opt/linux/jpeg–enable-shared–enable-static命令配置其交叉编译器和编译后安装的目录,然后执行make命令编译和make install命令安装,最后将jpeg目录下生成的库文件libjpeg.so.9拷贝到开发板根目录下的lib文件夹中,即完成jpeg库的移植。
通过sourceforge网站下载mjpg-streamer源码包。修改input_uvc目录下的Makefile文件,以其满足编译要求。然后执行make CC=arm-linux-gcc命令进行编译。在开发板建立mjpg安装目录,将其源码目录中的.so为后缀的共享库文件和start.sh文件及文件夹www拷贝到其中,同时复制编译后目标文件路径下的可执行文件mjpg_streamer到开发板根目录的bin文件夹中,至此整个移植过程完毕。最后执行./mjpg_streamer-i“/mjpg/input_uvc.so –y –d /dev/video2” –o “/mjpg/output_http.so–w/mjpg/www”命令以开启视频服务器。
本文采用飞凌公司的ARM11开发板进行实验,通过烧写并运行应用程序,可在远程PC机上看到视频监控效果。在浏览器端输入服务器端的IP地址访问目标服务器,即输入http://10.17.133.88:8080/?action=stream,视频监控效果如图4所示。从监控画面可以看出,接收到的监控画面比较清晰,反映出通过Mjpg-streamer服务器进行无线传输的图像画面质量较好,达到了无线传输的功能。
图4 视频监控效果图Fig.4 Video surveillance renderings
通过表1中两种方法进行稳定性测试,从测试效果可以看出,在浏览器端显示的图像信息良好,系统不管在何种情况下,均没有出现死机或卡顿的现象,说明设计的监控系统性能稳定。
表1 稳定性测试方法与结果Tab.1 Stability testing methods and results
本文设计了一种基于 ARM11、USB摄像头、WIFI以及Mjpg-streamer软件的嵌入式视频监控系统,进行了linux系统及视频服务器软件的编译与移植,实现了视频流在基于802.11g的远程视频的实时稳定传输。该系统体积小,功耗低,经测试,系统稳定可行,实时性好,可被多用户同时访问,远端计算机可以清晰地观测到室内监控画面。该系统满足室内视频监控的需求,为进一步提高视频图像传输质量和传输效率,可以考虑加入最新H.264编解码算法进行视频图像的编解码。
[1]钱华明,刘英明,张振旅.基于S3C2410嵌入式无线视频监控系统的设计[J].计算机测量与控制,2009,17(6):1132-1134.QIAN Hua-ming,LIU Ying-ming,ZHANG Zhen-lv.Design of embedded wireless video monitor system based on S3C2410[J].Computer Measurement&Control,2009,17(6):1132-1134.
[2]涂继辉,余厚全,佘新平.基于ARM的视频监控系统的设计与实现[J].长江大学学报(自然科学版)理工卷,2010(2):89-91.TU Ji-hui,YU Hou-quan,SHE Xin-ping.Design and implement of an embedded video Mmonitoring system[J].Journal of Yangtze University(Natural Science Edition)Sci&Eng V,2010(2):89-91.
[3]张伟男,张溢华,唐伦,等.基于无线传输的移动视频监控系统的设计[J].安防科技,2010(2):26-28.ZHANG Wei-nan,ZHANG Yi-hua,TANG Lun,et al.Design of mobile video monitor system transmitted over wireless[J].Security and Safety Technology Magazine,2010(2):26-28.
[4]陈书益,黄永慧.开源视频服务器软件MJPG-streamer的研究和应用[J],电子设计工程,2012(5):173-176.CHEN Shu-yi,HUANG Yong-hui.Research and application of open source video server MJPG-streamer[J].Electronic Design Engineering,2012(5):173-176.
[5]伍俭,罗桂娥.基于B/S模式的嵌入式视频监控系统的设计[J].微型机与应用,2010(4):74-76.WU Jian,LUO Gui E.Design of embedded viedo monitoring system based on B/Smodel[J].Microcomputer&Its Applications,2010(4):74-76.
[6]王刚,毛剑飞,田青,等.基于ARM11的无线视频监控系统[J].计算机系统应用,2011(8):18-22.WANG Gang,MAO Jian-Fei,TIAN Qing,et al.Wireless video surveillance system based on ARM11[J].Computer Systems&Applications,2011(8):18-22.
[7]郭巧云,许雪梅,李岸,等.基于ARM11的无线视频监控系统的设计[J].计算机测量与控制,2010(8):1786-1788.GUO Qiao-yun,XU Xue-mei,LI An,et al.Design of a wireless video monitoring system based on ARM11[J].Computer Measurement&Control,2010(8):1786-1788.
[8]Salim Beg,M.Khan,E.Video over wireless networks:A brief review [C]//Communication Systems Software and Middleware and Workshops,2008.COMSWARE 2008.3rd International Conference on,2008:692-698.
[9]张超.基于嵌入式linux的交通视频采集传输系统[D].西安:长安大学,2013.