赵 建,张秋晨,李 宁
(太原科技大学计算机科学与技术学院,太原030024)
视频监视系统是现代生活中不可缺少的安全保障系统。工厂、学校、住宅小区、银行等众多组织机构和场所都可以用到视频监视系统,来保证正常的生产生活秩序。视频监视系统的优点众多,因此其被广泛使用。
目前的视频监视系统,主要为模拟视频监视、模拟数字混合视频监视两种。模拟视频监视系统使用的是基于模拟信号的录像设备、监视器及记录设备。模拟数字混合视频监视系统在前者的基础上做了改进,将视频储存介质升级,使用光盘或者硬盘保存视频数据。但是以上两种视频监控系统都存在着一个很大的不足,就是在搭建系统的时候必须重新部署专用的视频线路,而本套视频监控系统为网络数字视频监控系统,可以利用已经存在的网线将采集来的视频数据经由远程网络服务器,经过视频编码器的处理,使终端用户可以直接看到摄像头拍摄的图像。可以免去重新部署专用线路的人工和材料成本,并且提高了视频监控系统的可维护性和可靠性,还可以在此基础上实现分布式存储,提高了监控视频的灵活性和可靠性[1]。
设计方案的系统架构如图1所示。包含视频收集端,视频编码处理模块,搭建于嵌入式系统的网络服务器,以及接收数据的客户端。采集设备接收来的视频数据要经过编码器进行编码优化。流媒体服务器用来建立与客户端的会话,向请求的客户端发送收集到的数据等。客户端可以是一般的PC机。
图1 系统架构Fig.1 System architecture
工作流程大致如下。服务器启动以后,监听开始,此时等待客户端进行连接;当客户端创建后,向服务器发送请求;服务器端接受请求,启动视频收集端,并向客户端返回信息;然后客户端通过RTSP协议向媒体地址发送本地接收端口、传输方式、传输协议等信息,请求初始化视频;建立连接后,服务器将开启一个新线程为用户建立新的视频流;收到响应后,客户端便可观看到视频收集端收集并编码处理后的实时视频;客户端发出请求结束会话,释放会话中的视频资源;服务器接收到请求后,结束会话,服务器释放本地客户端资源。
对于传输协议的选择,RTSP协议在传输视频方面改善了视频稳定性。和基于HTTP协议的视频传输相比较,其出现画面不稳定晃动与花屏的概率明显下降。两种协议在花屏次数上的比较如表1所示。明显可以看出,本设计选用的RTSP协议要优于HTTP协议。
表1 质量比较Tab.1 Quality comparison
RTSP是流传输控制协议,基于RTP协议,它定义了如何有效地通过IP网络传输媒体数据,是一种客户端到服务器端的多媒体描述协议。它是一种应用层协议,具有很高的灵活性。RTSP协议具有很多优点,如可扩展性强,易于解析,多服务器支持,传输协调等,而且提供了对流媒体的控制功能。RTSP协议的请求报文格式如图2所示。
图2 RTSP请求报文格式Fig.2 RTSP request message format
整个协议的工作分模块进行,主要有RTSP管理模块,RTSP会话模块,RTP模块,辅助模块和应用程序接口模块。RTSP管理模块负责远程控制管理和会话管理,一直处于监听状态,可及时响应下层网络的数据包,将命令解析分发,让上层网络对不同的命令分别相应;RTSP会话模块中嵌套了SDP协议,通过套接字SOCKET发送和接收相应的请求和应答信息,管理媒体信息,同时完成处理命令解析控制,建立会话,维护会话状态和用户信息,结束会话等功能;RTP模块负责将收集端传输的实时流数据按协议格式交由底层网络接口模块发送,此模块维护着与RTP数据包有关的信息,并随着传输过程一直更新这些信息,作为上层模块的参考;辅助模块是作为其他模块的辅助,提供它们工作时需要的信息。辅助模块的工作有字符管理,目的地址管理,管理目的地址IP与端口号等;应用程序接口模块,是RTP/RTSP协议与应用程序的接口,协议的功能通过此接口提供给用户应用程序,它允许应用程序设置协议运行过程中的各种参数,发送和接受RTP包和RTSP 命令等[2]。
本系统使用的硬件平台功能框图如图3所示。硬件平台采用三星公司推出的16/32位RISC微处理器S3C2440A,主频400 MHz,最高可达533 MHz.它采用ARM920t的内核,0.13 um的CMOS标准宏单元和存储器单元。ARM920T实现了MMU,AMBA BUS和Harvard高速缓冲体系结构。这一结构具有独立的16 KB指令Cache和16 KB数据Cache,每个都是由具有8字长的行组成。通过提供一套完整的通用系统外设,S3C2440A减少整体系统成本和无需配置额外的组件。它支持MPEG4/H.264编码解码,支持实时视频会议和NTSC、PAL制式的输出。同时硬件平台上还配备了64 M的频率高达100 MHz的SDRAM,32 bit的数据总线,1个100 M的RJ-45接口,2个USB接口,3个串行口,完全满足本设计的需要[3]。
图3 硬件平台Fig.3 Hardware platform
本设计使用的视频服务器名字为MJPG-streamer,它是一个开源的视频服务器软件。它使用的是V4L2接口[4],该接口从摄像头中把数据取出来,将数据封装一个结构体,用来描述摄像头的一些信息,比如采集图片的宽高,图片的格式等等。其接口代码如下:
接着是把这个结构体写入驱动中,用来初始化摄像头。
MJPG-streamer启动后,先进行初始化,包括硬件初始化、输入初始化、输出初始化。然后调用输入模块进行数据采集。客户端请求数据时,调用输出模块进行流媒体输出。当关闭服务器时,自动进行清理工作[5]。
由于开发板搭载的LINUX系统未集成摄像头驱动,因此先要将摄像头驱动移植到开发板系统中,使摄像头可以正常启动工作。解压内核配置文件后复制内核配置文件到根目录下,用ls命令确认根目录下存在名为相应的内核配置文件。执行#cp config_mini2440_w35.config来创建内核配置文件副本,然后执行#cp config_mini2440_w35.config开始配置内核,在Device Drivers菜单里面,选择 Multimedia devices,然后进入 Video capture adapters将摄像头驱动配置为GSPCA,保存退出,执行编译命令make zImage进行编译,然后将编译后的内核传入开发板当中,启动开发板后插入摄像头,系统提示发现USB设备,说明驱动程序移植成功[6]。
嵌入式系统中使用的服务器软件名为MJPG-streamer,需要很少的CPU和内存资源就可以工作,非常适合嵌入式系统。在使用MJPG-streamer之前,需要根据所使用的设备对MJPG-streamer进行相应的配置,修改mjpg-streamer/plugin/input_uvc/input_uvc.c文件中input_init()函数下的 width和height分别为320,240,退出编译,将start.sh 中的密码配置注释掉,复制 mjpg-streamer*.so start.sh www到开发板的同一目录下,运行start.sh,命令行出现参数提示,说明移植成功。
测试在Windows 7操作系统下使用Opera浏览器进行。在地址栏输入 http://192.168.1.230:8080/stream_simple.html进入监视界面,实际运行效果如图5所示。
图5 实际效果Fig.5 The actual effect
MJPG-streamer使用MJPEG数据流来形成视频图像。在运行过程中,获取了视频流的相关数据。为了解其编码性能,将它同相同分辨率的MPEG-4视频数据进行比较,结果如表2所示。
表2 两种格式的比较Table.2 Comparison of the two formats
从表2可以看出,相同分辨率下,MPEG-4的带宽占用最小,压缩率也最高。但是在图像质量上,MJPEG一直保持优秀,而MPEG-4的图像质量极不稳定。由于采用帧间压缩技术,当物体呈现运动状态时,MPEG-4格式不会立即反应传输,从而会产生较大的延时现象,而 MJPEG则不会。现阶段MPEG-4应用于网络视频监控有“编码/译码的运算速度”和“影像失真”两大问题。要达到实时监视效果,使用MPEG-4技术可能反会因为其压缩率高导致的编码时间长而成为瓶颈。
本设计是一个根据流媒体技术及网络服务器技术,基于嵌入式开发板LINUX系统,使用MJPG-streamer流媒体服务器传输视频数据的视频监视系统。本文对目前的监控领域情况进行了介绍,分析了监视系统的基本原理,设计了系统总体工作流程,最后将系统实现,并和同分辨率下的其他视频编码格式进行了比较。下一步可研究将无线技术融合进系统,使监视的灵活性大大提升。
[1]罗世伟,左涛,邹开耀,等.视频监视系统原理及维护[M].北京:电子工业出版社,2007.
[2]COLIN PERKINS.RTP:Audio and Video for the Internet[M].Boston:Addison-Wesley Professional,2003.
[3]赵谦.嵌入式系统Web服务器的图像采集终端的设计与研究[J].煤炭技术,2010,29(3):198-202.
[4]张豪,杨春燕,汪筱阳.S3C2440A芯片及应用[J].电子设计工程,2011,19(24):26-29.
[5]陈书益,黄永慧.开源视频服务器软件MJPG-streamer的研究和应用[J].电子设计工程,2012,20(5):172-176.
[6]宋宝华.Linux设备驱动开发详解[M].2版.北京:人民邮电出版社,2010.