基于Linux的嵌入式网络视频监控系统研究与设计

http://www.nesr.lingd.net/article-4364839-1.html

摘 要:网络视频监控已经在嵌入式领域得到了发展,但目前视频监控硬件设施比较昂贵,不能普遍使用。本文提出了一种以ARM9处理器为开发硬件平台和嵌入式Linux系统为软件开发环境的新方法,采用中星微ZC301摄像头作为视频前端采集,利用TCP/IP协议技术实现网络通信。系统内部嵌入移植的Web服务器,用户可以通过浏览器进行远端访问。该系统实现了局域网的环境监控,开发成本低,使用方便而且性能高。
关键词:嵌入式 视频采集 Web服务器 视频监控 浏览器
 
1 引言
随着嵌入式处理器和开源Linux系统的广泛应用,网络视频监控向着嵌入式方向发展已经成为一种趋势。目前已经在该领域得到了初步发展,但是由于前端监控系统的硬件设施昂贵,成本较高,不能普便使用。低廉的设备又不能满足用户的动态可视化以及稳定性和可靠性的要求。针对用户的需求,本论文设计了低成本高效能的方案,运用当前的网络技术、视频压缩技术和嵌入式技术等设计基于嵌入式Linux系统的网络视频监控系统。该系统以嵌入式Linux系统和嵌入式控制器S3C2410为核心平台,在这个平台上建立web服务器和视频服务器。利用TCP/IP协议技术实现网络通信,把USB数字摄像头采集到的图像进行JPEG压缩, 然后通过网络程传输到远计算机客户端。客户端方采用Java Applet技术实现图像的接收并完成显示功能。客户端的用户可以通过具有java插件的浏览器实现监控。实验证明该系统的稳定性、可靠性较高。
2 系统整体模块设计
本系统主要由嵌入式系统和网络通信两大系统组成。嵌入式系统由嵌入式处理器S3C2410和linux系统组成,网络系统由web服务器和客户端以及实现通信的通道组成。系统的设计采用模块化设计,本系统由嵌入式系统模块、视频采集模块、网络通信模块和客户端组成。各个模块之间的关系如图1所示。
嵌入式处理器S3C2410是一款基于ARM920T内核的16/32位RISC微处理器。内部带有全性能的MMU(内存处理单元),它适用于设计移动手持设备类产品,具有高性能、低功耗、接口丰富和体积小等优良特性。该处理器集成了64M SDRAM、64M NAND FLASH 、1M BOOT FLASH、RJ - 45网卡、音频输入与输出、USB HOST、USB SLAVE、标准串口、SD卡插座等。用户可以将代码存放在NAND FLASH中,并从NAND FLASH启动。内置的NAND FLASH将访问控制端口,并将引导代码(vivi)自动加载到内部SRAM运行,之后SRAM中的引导代码将操作系统内核映像(zlmage)以及根文件系统加载到SRAM并运行。
3 系统软件的设计实现
3.1 视频采集模块实现
Linux 内核驱动里面已经支持了诸如ov511芯片的摄像头,但是这些摄像头采集的效果不好。本系统采用中星微zc0301芯片的摄像头,该摄像头采用cmos传感器,价格低廉,性能高,usb接口协议灵活,同时具有同步和异步数据传输,兼容性好,而且提供了良好的图像处理及对外接口功能。目前linux驱动里面不支持该类芯片的驱动。为了使摄像头能够在系统中工作,需要加载该驱动。驱动的下载地址http://mx-haard.free.fr/spaca50x/embedded/KernelPatch/。系统linux内核版本使用的是linux 2.6.11,需要下载2.6版本的内核补丁。然后对内核进行打补丁,这样内核就支持该芯片的驱动。
在USB摄像头被驱动后,只需要再编写视频采集的应用程序就可以了,视频图像的采集是通过Vide04linux实现的。视频采集程序的流程如图2所示。
Video4linux 是linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数。在视频采集中,应用程序首先通过open()函数打开视频采集设备并返回一个文件描述符号,这个文件描述符就代表了捕获的设备硬件。成功开启设备档后,调用 ioctl()取的设备文件的相关信息,并且将取的信息放到video capability结构中,同样调用 ioctl()将视频窗口信息放到video picture结构中。视频设备的关闭通过close()函数实现的。通过这些函数,可容易打开、读写、关闭等基本操作。
3.2 网络通信模块实现
网络通信模块负责将摄像头采集的视频图像数据通过网络传输到远端计算机。监控系统在实现方式上采用了“浏览器—服务器”结构,即在视频采集端建立嵌入式Web服务器,在客户端的Web浏览器上输入IP地址就能接收到从服务器端传过来的视频信息,它包括嵌入式Web服务器设计和视频应用程序的开发。
3.2.1 嵌入式Web服务器设计
Web 服务器和客户端的浏览器是通过超文本传送协议HTTP进行通信的。其工作原理大致可分为三个步骤,第一步,Web浏览器向一个特定的服务器发出Web页面请求;第二步,Web服务器接收到Web页面请求后,寻找所请求的Web页面,并将所请求的Web页面传送给Web浏览器;第三步,Web服务器接收到所请求的Web页面,并将它显示出来。Web服务器工作原理如图3所示。
嵌入式Web服务器是移植Web服务器到嵌入式领域的一种服务器。它仍然是以TCP/IP为底层的通信协议。嵌入式Web服务器简化了系统结构,将信息采集和信息发布都继承到嵌入式设备中,具有标准的接口形式和通信协议,内嵌的Web服务器同样可以基于浏览器方式的操作和控制界面。
目前嵌入式领域中最典型的Web服务器有boa和thttpd。boa是一个非常小巧的Web服务器,可执行代码只有约60kb,占用系统的资源少,而且速度快和安全性能好。本系统采用的就是boa服务器,就是把boa服务器的移植到本系统中。首先从www.boa.org下载boa源代码, 目前最新版本boa-0.94.13。解压到linux系统目录下,修改makefile。只需要把CC=gcc改成CC=arm-linux-gcc和CPP=gcc-E改成CPP=arm-linux-gcc-E就可以了。然后进行编译,把生成的Web应用程序下载到开发板上linux系统中的/bin目录下, 让boa在系统启动时候自动运行,这样在开发板上就移植了boa服务器。
3.2.2 网络视频应用开发
视频信息通过摄像头采集到的图像需要通过网络传送另一端通过浏览器显示出来,因而网络视频应用的开发包含视频服务器端程序设计和客户端程序设计。
(1) 视频服务器端程序设计视频服务器端工作主要是与客户端建立连接,并根据客户端用户的指令,调用相应的函数处理客户端的控制要求。服务器端程序由C语言开发。主程序的设计首先初始化监控设备的数据结构,包括采集模式、显示模式和端口初始化设置等,初始化并分配内存并以可读写的方式打开视频设备。然后系统创建了一个grab线程,grab函数通过调用v4lGrab()采集图像并传输到缓冲区。然后创建一个Socket对象并监听,然后用Accept方法监听是否有客户端的连接请求。如果没有客户端连接则进程阻塞,继续监听,当有客户端连接请求则创建一个新的socket对象,然后启动视频服务线程service来与客户端通信。视频服务器工作流程如图4所示。
(2) 客户端程序设计
在本系统中,远程的web用户查看视频采集的图像信息是通过applet与视频服务器进行交互的。applet是能够在web网页中运行的应用程序,它具有安全,功能强和跨平台等特性。
applet 主要完成视频播放的功能。applet的程序代码是保存在web服务器上的,当web用户通过浏览器请求视频监控要求时,该程序下载到web用户浏览器上运行。用户通过该程序进行现场动态监控。applet程序是由java语言实现的。applet运行时首先调用init()函数进行一些初始化工作,然后自动调用start()与视频服务器建立连接,将视频图像显示在web 用户的浏览器上。
3.3 web 网页设计
web 网页设计是用HTML语言设计的。HTML语言是一种超文本标记语言,它包含了文档数据和显示格式两个部分,其中文档数据是显示在浏览器中数据内容,显示格式则规定了这些内容在浏览器中以格式呈现给用户的。HTML能够用来表示超文本消息、邮件、文档、超媒体和数据库查询等,以及有内嵌图形的简单结构文档,还有已存在的信息的超文本视图。当用户请求web网页时,浏览器就把HTML的数据显示给用户。
本系统网页的设计主要是通过标记的方式将applet引入到html文档中。在之间标记一些参数属性。这个标记之间的程序代码设计如下。
其中codebase和code属性配合给出applet类的完整路径,code给出文件的名字,codebase指出包含文件的路径。width和height是applet窗口的大小。align是applet窗口显示的位置。上述的这些代码完成了视频显示的主体工作。
4 实验测试
系统测试是在实验室内局域网进行的。客户端使用radhat enterprise linux AS4操作系统,浏览器使用的是firefox浏览器,由于服务器端的web网页包含java控件, 默认安装的firefox浏览器不支持java插件,需要安装java环境,让浏览器支持java插件。硬件平台使用的是友善之臂S3C2410板。把本系统制作出来的内核映象和文件系统映像下载到开发板。把摄像头插入到USB接口以及通过网线把开发板接入到本地局域网。重启开发板,通过终端把开发板IP设置为本地网址202.193.74.220。运行web服务器和视频服务器。客户端通过安装java环境的firefox浏览器输入http://202.193.74.220/webcam/webcam.html即可实现现场动态的监控。如图5所示实现监控本地实验室的情况。
5 结论
本系统的设计是在以数字信息技术和网络技术发展的前提下,运用当前的嵌入式技术和ARM技术设计网络视频监控系统,具有一定的创新性。该系统由于采用了高性能的ARM9处理器和嵌入式linux操作系统组合,具有一定的可扩展性,可以通过适当的功能扩展来满足用户更高的要求。此外,可以针对不同的实际应用和硬件平台对linux内核进行定制,以满足不同嵌入式平台用户的需要。本系统具有功能强,可靠性高,稳定性好和具有一定的扩展性特点,对嵌入式开发有一定的借鉴意义。

你可能感兴趣的:(linux视频)