APP下载

基于S3C2440A和MJPG—Streamer嵌入式网络视频监控系统的设计

2015-04-08彭玲黄松发

彭玲 黄松发

摘要:本文将嵌入式技术与网络技术融合到视频监控系统,提出了基于S3C2440A和MJPG-Streamer的嵌入式网络视频监控系统,通过测试表明视频图像显示效果较好,运行稳定、可靠。

关键词:S3C2440A USB攝像头 MJPG-Streamer v4l2

1 概述

随着科学技术的高速发展,视频监控系统已经进入到人们生活的各个方面,将嵌入式技术与网络技术融合到视频监控系统,弥补了以前传统视频监控系统存在体积过于庞大、布线复杂、价格高等不足,在图像处理与传输方面都有很好的应用,具有重要的社会和应用价值[1]。

2 总体设计

本文提出的视频监控系统以ARM9的S3C2440A 作为主控芯片,配合Linux操作系统,通过USB与摄像头连接,搭建了MJPG-Streamer流媒体视频服务器,完成视频数据的采集、压缩及网络传输到远程客户端[2],远程客户端通过软件进行查看,从而实现视频监控。

3 系统硬件设计

本系统的核心板采用Samsung公司生产的S3C2440微处理芯片,该芯片基于ARM920T内核,主频高达400MHz,内置了USB控制器,本系统的USB摄像头采用具有视频压缩编码的ZC0301P芯片[3]。

4 系统软件设计

4.1 Linux内核配置编译 要使USB摄像头能正常工作,Linux需要加载该功能模块,可以有两种方式:一种是把相应模块编译进内核;另一种是编译成模块,生成对应的.o文件,可以动态加载[2]。本文采用第一种方式,直接编译进内核,USB摄像头随内核启动就能正常工作了。在PC机的Linux系统下,进入linux-2.6.30.4内核目录,输入make menuconfig,进入到Linux 内核配置菜单,由于本文选择ZC0301P系列的USB摄像头,具体操作如下:

Device Drivers 目录---> <*> Multimedia support ---> [*] Video capture adapters --->[*] V4L USB devices ---> <*> USB ZC0301[P] Image Processor and Control Chip support。

保存配置后,执行make zImage可生成新的压缩内核zImage。

4.2 MJPG-Streamer视频服务器软件的设计 MJPG-

Streamer是一个基于网络应用的轻量级的开源的视频服务器软件,可以从USB摄像头中获取视频数据,通过TCP/IP网络协议传输到客户端,主要包括input插件和output插件,结合Linux 系统的API,能完成视频数据的采集、压缩和网络传输[4]。

4.2.1 input插件。input插件主要是完成USB摄像头的初始化以及视频数据采集,需要调用Video for Linux(V4L),它是上层的视频应用程序与系统内核的接口,由于V4L 中存在的一部分设计上的bug[2],本文使用V4L的改进版V4L2来编写视频采集程序,具体流程如图2所示。

4.2.2 output插件。output插件主要是完成视频压缩、网络传输。本文使用基于帧内和帧独立的M-JPEG压缩技术,虽比不上低码率图像压缩标准的H.264,但画质还是比较清晰的,在嵌入式中应用比较广泛。在网络传输上使用TCP/IP网络协议,定义socket 套接字,通过bind、listen、accept来编程,实现视频数据的网络传输[2]。

4.2.3 MJPG-Streamer视频服务器的搭建及系统测试。本文搭建MJPG-Streamer视频服务器,并进行系统测试,具体步骤如下:

①首先下载MJPG-Streamer源码包,在PC机的Linux 系统下,使用tar 命令解压。

②在PC机的Linux 系统下安装交叉编译器arm-linux-gcc,生成的可执行文件可以在ARM9开发板上运行。

③进入到mjpg-streamer目录下,将所有目录下的Makefile文件中的CC=Gcc修改为CC=arm-linux-gcc,使用make编译,生成uvc-stream、mjpg-streamer、input*.so、output*.so的组件。

④将mjpeg-client/bin/win32-upx/目录下的客户端程序viewer.exe,复制到windows平台下,可以直接在windows平台下运行[5]。

⑤将前面所生成的内核通过TFTP下载到ARM9开发板中并启动,连上USB 摄像头。

⑥在超级终端上,通过NFS挂载,将input*.so、output*.so文件复制到ARM9开发板的/lib/WebCam目录下,将mjpg-streamer复制到ARM9开发板的/sbin/目录下,然后运行可执行文件uvc-stream。

⑦在PC端打开viewer.exe,输入ARM9开发板的ip和端口号,再点击connect,就可以实现监控显示,效果如图3所示。

5 总结

本系统以S3C2440A为核心,结合Linux操作系统,搭建MJPG-Streamer视频服务器,实现了嵌入式视频监控,但只是基于本地局域网的视频监控,且视频显示清晰度及实时性还有待改进,随着无线网络的发展,还可以利用无线网卡实现实时无线监控。

参考文献:

[1]葛林.基于ARM9和OpenCV的视频监控系统的研究[D].湖北工业大学,2013.12.

[2]华春梦,刘冲.基于S3C2440嵌入式平台的USB摄像头视频监控[J].电脑开发与应用,2015.1.

[3]许敏.基于S3C2410的嵌入式视频监控系统的设计[J].电脑知识与技术,2014.2.

[4]陈恒鑫,林威,张钦宇.基于MJPG-Streamer的移动视频监控系统设计[J].计算机测量与控制,2014.5.

[5]李佳林,刘永春.基于S3C2440网络视频采集系统的设计与实现[J].电脑知识与技术,2014.1.