APP下载

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

2017-05-06李彬

速读·下旬 2017年3期
关键词:视频监控系统网络通信

李彬

摘 要:为了解决传统视频监控系统存在的诸多问题,提出了一种基于嵌入式Linux远程视频监控系统。系统以嵌入式Linux和控制器S3C2410为核心平台,通过嵌入式平台建立Web服务器和视频服务器,利用基于TCP/IP的socket编程实现网络通信,将USB摄像头采集的图像数据进行压缩并通过网络传输传送到视频服务器客户端。客户端可接收连续帧图像并完成显示,用户可通过浏览器、手机端实现远程监控。

关键詞:视频监控系统;S3C2410;网络通信;Linux

1系统总体设计

针对网络视频监控设备的实际应用需求,结合图像采集压缩编码、嵌入式系统和网络技术等几方面的新技术,设计了一套嵌入式网络视频监控系统,用以实现视频数据的采集、压缩与网络传输。该系统基于S3C2410的ARM920T芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,经MPG-440芯片压缩编码,系统直接与网络相连,用户使用标准的网络浏览器和流媒体播放程序即可查看远程视频影像。系统总体设计包括硬件设计和软件设计两部分,硬件设计模块主要包括微控制器模块、压缩编码模块、网络接口模块3部分,微控制器模块主要由主控芯片、DataFlash和SDRAM(1)组成,其中,主控芯片是整个控制系统的核心,它负责整个系统的调度工作。DataFlash里固化了嵌入式Linux内核、及其文件系统、应用软件和系统配置文件。SDRAM(1)作为内存供系统运行使用。压缩编码模块由视频数据采集芯片、MPEG-4压缩编码芯片、SDRAM(2)组成,负责将视频流转化为MPEG-4码流。网络接口模块主要是配合主控芯片传送MPEG-4码流。当系统启动时,微控制器将Linux内核转入SDRAM(1)中,系统从SDRAM(1)中启动。系统启动后,微控制器控制MPEG-4编码模块。

2软件系统设计

Linux具有内核小,效率高,源代码开放,内核直接提供网络支持等优点。但嵌入式系统的硬件资源毕竟有限,因此不能直接把Linux作为操作系统,要针对具体的应用通过配置内核、裁减shell和嵌入式C库对系统进行定制,使整个系统能够存放到容量较小的Flash中。Linux的动态模块加载,使Linux的裁减极为方便,高度模块化的部件使添加非常容易。嵌入式Linux系统主要由4个部分组成:引导内核启动的文件(bootloader)、Linux内核文件(kernel)、虚拟磁盘文件(ramdisk)、用户空间文件(user)。它们分别被放在DataFlash内的4个分区模块中。

Linux移植技术已经成熟,不作详细的阐述。下文主要介绍USB摄像头驱动、基于V4L设计的视频采集模块和视频压缩编码模块的设计。

2.1USB摄像头驱动

搭建好嵌入式Linux的开发环境后,第一步工作就是USB摄像头的安装与驱动。在Linux下,设备驱动程序可以看成Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件实现的细节,使得应用程序可以像操作普通文件一样来操作外部设备,可以使用和操作文件中相同的、标准的系统调用接口函数来完成对硬件设备的打开、关闭、读写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统调用函数。

Video4Linux(V4L)是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数。对于USB口摄像头,其驱动程序中需要提供基本的I/O操作接口函数open,read,write,close的实现。当应用程序对设备文件进行系统调用操作时,Linux内核将通过file-operations结构访问驱动程序提供的函数。在系统平台上对USB口数码摄像头进行驱动,首先把USB控制器驱动模块静态编译进内核,使平台中支持USB接口,再在需要使用摄像头采集时,使用insmode动态加载其驱动模块,这样摄像头就可正常工作了。确定USB摄像头被正常驱动后,下一步就是使用Video4Linux提供的API函数集来编写视频采集程序。

2.2基于V4L设计的视频采集模块

在Linux下,所有外设都被看成是一种特殊的文件,称为设备文件。系统调用是内核和应用程序之间的接口,而设备驱动程序则是内核和外设之间的接口。他完成设备的初始化和释放、对设备文件的各种操作和中断处理等功能,为应用程序屏蔽了外设硬件的细节,使得应用程序可以像普通文件一样对外设进行操作。

Linux系统中的视频子系统Video4Linux为视频应用程序提供了一套统一的API,视频应用程序通过标准的系统调用即可操作各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操作视频设备文件实现对视频设备的访问。

2.3视频压缩编码模块

获取图像数据后,可以直接输出到FrameBuffer进行显示,由于本系统要将采集到的视频影响通过网络传输出去,所以在传输之前要对原始的图像数据进行压缩编码,在此选用映佳公司的MPG440芯片来实现MPEG-4视频编解码方案。和其他标准相比,MPEG-4压缩比更高,节省存储空间,图像质量更好,特别适合在低带宽条件下传输视频,并能保持图像的质量。对视频流进行压缩编码以后,接下来就要实现网络传输部分的功能。

流媒体指的是在网络中使用流技术传输的连续时基媒体,RTP是目前解决流媒体实时传输问题的最好办法,JRTPLIB是一个面向对象的RTP库,他完全遵循RFC1889设计,下面讲述如何在Linux平台上运用RTP协议进行实时流媒体编程。

3结语

本系统基于S3C2410平台和Linux操作系统,利用Video4Linux设计采集程序,使用MPEG-4压缩编码,通过实时流媒体传输技术实现了网络传输,整个系统具有稳定可靠、安装简便、成本低廉等特点,监控距离随网络延伸而不断加长,具有良好的发展应用前景。可扩展应用在工业控制、视频会议系统、可视电话、远程监控系统等诸多领域。

参考文献:

[1]田泽.嵌入式系统开发与应用[M].北京航空航天出版社,2005.

[2]宋良涛.基于Web技术的嵌入式网络视频监控系统研究[J].信息通信,2015(7):92-93.

猜你喜欢

视频监控系统网络通信
基于网络通信的智能照明系统设计
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展