张 琳
(天津滨海职业学院,天津 300451)
网络视频监控技术是一种集通信信息技术、计算机网络技术、数字视频技术等为一体的综合性应用技术。视频监控技术是安全领域的研究热点,已经广泛应用于军事、交通、银行、远程教学等领域。视频监控系统的发展阶段为模拟监控系统和数字监控系统,目前已到网络化视频监控系统时代。传统视频监控系统的布控区域、设备扩展和数量上的限制,使得视频监控只是监视没有控制。系统的网络化将打破这个限制,并向智能化方向发展,系统不仅有监视功能还能进行智能控制。本文设计了一种以S3C2410嵌入式处理器和Linux操作系统为核心的网络视频监控系统。该系统依靠流媒体技术传输视频信号和视频数据压缩技术压缩数据,能够实现实时传送视频采集数据。该系统本身就是微计算机控制系统,可根据现场的实际情况做出自动控制处理,用户也可通过网络对系统中任何一个视频节点进行监视,并根据要求通过发送控制信息来控制设备的动作。
网络视频监控系统的工作原理为压缩软件将摄像头的原始视频信号压缩封装成MPEG4数据格式,然后利用流媒体服务器将此数据再转换成流媒体格式,再传送到计算机网络上,通过以太网口实时传送。客户端从嵌入式视频监控模块获得MPEG4视频数据并播放,而且该系统支持多客户端同时监控,并把控制信息通过网络实时传到监控系统端。
本系统以S3C2410处理器为核心。S3C2410处理器是Samsung公司生产的32位微型处理器,拥有大量的资源,包括独立的16KB数据缓存和指令缓存、RAM控制器、LCD控制器、NAND闪存控制器、4路DMA、3路UART、带PWM的定时器、并行输入输出端口、8路10位ADC、I2C接口、Touch Screen的接口、USB接口控制器、2路SPI,主频可达203MHz。平台配置了16MB16位的Flash和64MB32位的SDRAM。另外外接一个摄像头带USB口,通过引出的HOSTUSB接口,在缓冲区中摄像头采集的视频数据被存放,然后图像处理程序在系统平台上对缓冲后的图像数据进行处理,将加工后的数据保存并进行UDP打包。最后通过以太网控制器芯片DM9000E扩展的一个网口将图像发送到Internet上。系统可通过RS232对外部控制设备通信和控制。其硬件结构如图1所示。
图1 网络视频监控系统硬件框图
网络视频监控系统软件是由服务器应用软件和客户端应用软件两部分组成。服务器应用软件是基于Linux在目标板上运行的程序,客户端是在PC机上运行程序。整个软件系统结构图如图2所示。
图2 视频监控应用软件
1.服务器应用软件
服务器的应用程序用于完成视频信号的采集,然后将USB摄像头采集的信号经过模数转换并压缩,提交给系统中的嵌入式流媒体服务器程序,将数据转换为用于流式传输的格式,再通过IP多播技术的传输协议RTP/RTCP以及SDP等一系列标准的IP实时多媒体数据传输协议传送到网络上。
这一部分软件主要由四部分组成:嵌入式Linux操作系统、摄像头驱动程序、数据压缩子模块、嵌入式流媒体服务器软件。
选择的嵌入式Linux操作系统经过优化以后,具有反应能力强、易固化、体积小、可靠性好等特点。它也同时具备现代操作系统的存储管理、任务调度、中断处理、消息队列等功能;特别是系统本身包含了很多和硬件有关的驱动程序以及TCP/IP协议栈,为嵌入式软件开发人员提供了良好的开发平台。
嵌入式流媒体服务器软件设计流程包含三部分:
(1)系统的初始化过程。根据系统的配置信息如网络传输设置、视频源的类型、视频压缩编码等,创建并开启一个数据流。设置数据流的出口之后,产生SDP描述文件,并开启文件下载功能,使得后来实时取得的流媒体数据可以传输。
(2)视频流处理发送过程。接收MPEG4数据帧之后,调用网络发送函数发送数据帧,清理内存空间,并开始接受下一帧。
(3)中止视频流过程。删除销毁过程中产生的文件及对象,中止线程,结束程序。服务器端软件流程如图3所示。
图3 服务器应用软件流程图
2.客户应用软件
客户端应用程序主要完成终端视频数据的显示和控制。网络传输模块主要用于接收视频数据流和用户发送控制信息,存入缓冲区等待处理。视频数据解压模块对压缩后的数据流进行解压,并将图像实时显示在终端上。
1.嵌入式Linux移植
嵌入式Linux系统包括Bootloader(引导程序)、Kernel(内核)和根文件三个部分。在运行之前,操作系统内核将运行bootloader。本程序主要负责硬件设备的初始化,然后建立内存空间图,将系统软硬件环境调整到合适的状态。
系统的Linux内核版本是2.4.18,在http://ftp.linux.org.uk/下载内核及补丁,解压缩后将补丁通过管道装入内核源代码中。确认Makefile中CROSS_COMPILER=arm-linux-gcc和ARCH=arm。运行make menuconfig命令,在菜单下做相应的配置,之后运行make dep生成依赖文件,最后运行make zImage生成内核压缩镜像zImage。
2.摄像头的驱动程序
系统采用ANC公司生产的Q888型号摄像头,内置ZC301P芯片、CMOS感光元件,最高分辨率800*600dpi,130万像素,最大帧速率3ofps,传输接口usb1.1,高清镜头,自动增益,自动曝光控制;内置DSP视频压缩单元,2到8倍的压缩比,支持动静态视频采集。因为Linux系统中没有ZC301P摄像头驱动,所以应下载内核补丁,重新编译内核,将对应的摄像头支持模块选上。下载补丁和驱动后解压、打补丁进行重新编译内核,在内核配置中选spca5xx文件夹就有需要的驱动程序。生成的新内核中spca5xx..o、spcadecoder.o、spca_core.o是所需要的摄像头驱动。通过内核启动insmod这三个.o文件,摄像头就加载成功,可为应用程序提供基本的I/O操作接口函数open、read、write、close的实现。
3.制作文件系统
文件系统采用的是cramfs格式,cramfs是压缩文件系统(只读)。首先,做好根文件系统,创建Linux操作的基本目录结构/bin,/lib,/etc,/dev,/mnt等目录。通过各个目录加载相关配置的文件,配置好后,可创建文件系统的压缩镜像通过mkcramfs命令,然后以.cramfs结尾。
Linux中视频设备的核心驱动程序是Video4Linux(V4L)。它为视频设备的应用编程提供了一系列合适的接口函数,视频图像采集和传输设计过程是对/dev/video设备的操作过程。系统视频采集模块和传输模块的流程如图2中所示。
1.打开视频设备。利用操作系统提供的open函数打开视频设备,返回操作句柄,代码如下:
fd=open(videodevice,O_RDWR);
2.读取设备信息。V4L使用VIDIOCGPICT指令得到视频信息:
Ioctl(fd,VIDIOCGPICT,&videopict);
3.更改视频当前设置,代码如下:
Ioctl(fd,VIDIOCSPICT,&videopict);
4.视频的采集。操作系统会提供mmap函数实现内存映射。
5.对采集后的视频图像进行处理。
6.关闭视频设备,具体代码如下:Close(fd)。
USB摄像头采集到的视频信号经过模数转换并压缩,提交给系统中的嵌入式流媒体服务器程序,将其转换为利于流式传输的数据,然后通过一系列标准的IP实时多媒体数据传输协议如RTP/RTCP以及SDP等将数据传送到网络上。
图4 嵌入式流媒体服务器静态UML类图
1.嵌入式流媒体服务器的软件设计
软件采用C+ + 语言编写,静态UML类图设计如图5所示。系统由CMediaFlow类所代表的视频媒体数据流构成, 数据流由一系列节点串联而成。CMedianode类抽象地表示一系列节点。每个节点都是一个线程,一个线程有一个消息队列(CMsqQueue类)。消息队列用于接收相应的消息(CMSQ类),然后进行处理动作。也就是说,CMediasource类派生至CMedianode类,它表示所有数据流源头的节点,即数据流入点。类似地,CMediasink类派生至CMedianode类,它表示所有数据流的接收节点,即数据流的出口点。CMediaframe类表示数据流中的真实数据,数据流从数据源流向数据流出口。CVideosource类派生自CMediasource类,表示视频数据入口点。
图5 TCP网络通信流程
实时视频数据的获得是通过调用嵌入式Linux 操作系统的内核驱动来完成。代表视频数据的出口点是CRtpTransmitter类派生至CMediaSink类,对通过它封装网络RTP/RTCP协议的操作,将视频数据流直接发送到网络。HTTP 服务器的功能是通过CHttpServer类实现的, SDP 文件通过HTTP协议传送给客户端, 然后客户端根据SDP 文件的描述信息来获得视频流的IP 多播包。 SDP会话描述协议文件的操作由CSdpfile类实现,并根据当前的视频流配置信息生成SDP文件。
2. 视频网络传输
系统视频网络传输采用TCP协议,视频服务器负责采集视频图像数据,该服务器建立好TCP服务器后等待客户端的连接;客户端进行初始化,工作完成后,会主动连接TCP服务器,客户端得到应答后会建立连接,然后接收压缩视频数据并进行实时显示。网络传输的编程是利用internet的流式套接字设计的。TCP网络通信流程如图5所示。用户发送控制云台信息给监控系统来跟踪选定目标,它是利用socket的不同的端口号来区别控制信息还是请求视频信息,系统接收到控制信号后通过RS232对云台进行控制。
监控系统搭建有一个路由器、PC电脑和两个网络视频控制器(本系统)控制两个摄像头和摄像云台。系统可通过RS232对外部控制设备通信和控制,网络视频控制器可远程控制云台的上下左右转动,控制摄像头的变焦、聚焦、变倍等。路由器进行上网方式的选择、信道、模式、安全选项、SSID等无线设置,为了安全性,再进行绑定MAC地址、防火墙设置等等。PC电脑安装网络视频监控系统的服务器应用软件和客户端应用软件。服务器端应用程序完成视频信号的采集、转换、压缩和传输;客户端应用程序主要完成了终端视频数据的显示和控制。网络视频节点的安装可以随意安放,通过网线同网络连接,打破传统视频监控系统地理位置的限制。扩展数量上只要有IP就可以扩展,没有任何的限制,每个设备都要分配一个IP地址。
此监控系统具备视频信号的传输、显示、记录等基本功能,系统本身还具有自动报警的功能,只要有人进来系统就会自动报警,用户可以识别并且响应监视目标、报警信息以及确认复查报警信息等。通过计算机视觉技术可以将监控场所的前景和背景目标进行完全分离,对当前的监控场所进行监视并根据选定目标进行准确的识别、跟踪、提取。在监控场景内,用户可以设置报警规则,当监控场所中有目标出现,并与设定的报警规则有冲突时,系统可以发出自动警报,监控中心会发出报警提示,用户可以实时浏览报警信息,用户可通过客户端应用软件通过IP地址查看任何视频节点信息,画面可任意切换,此外系统还可发送控制信息来控制系统的其他设备,如安防系统的门禁,网络视频监控系统与支持数字视频服务器功能的门禁控制器同时实现从设备协议层到软件数据库的双重数据交换功能,从而实现对门禁及相关部位的图像抓拍和监视功能。
为了该系统能够正式投入使用,进行了网络视频监控系统的测试。测试包括两部分,测试前端摄像机的基本参数及实用性;测试监控平台主要的应用功能。测试的具体内容有实时的视频浏览、多画面监视轮巡、图像信息存储备份、存储及录制方式、云台控制、报警联动、设备管理、用户设置管理等,测试结果表明该系统性能良好。
本文设计的网络视频监控系统打破了传统监控系统布控区域、设备扩展和数量上的限制,用户可以通过网络监视现场和控制现场设备,并能监视多个现场。实验结果表明,本系统的工作非常稳定、可靠,实时性强并具有一定的智能化。随着传感器技术、人工智能的发展,各国监控系统向网络标准化、高清化、无线化、简捷化、智能化发展,在构建和谐、稳定的社会大环境下,智能化监控系统具有非常广泛的应用价值,该智能化监控系统具有良好的应用前景。我们要继续对新技术进行开发、研究与应用,继续优化当前的网络视频监控技术,从而更全面地促进社会的和谐、稳定发展。