杜通+刘思园+庄旭菲
摘 要:该课题研究了基于B/S架构的现代主流网络视频监控系统,提出了基于B/S架构的嵌入式Linux网络视频监控系统的设计方案。该网络视频监控系统是基于嵌入式Linux平台下,采用C++语言的QT-Embeded库进行开发,实现了客户端跨平台、免下载软件、无需插件在浏览器进行远程视频监控。
关键词:视频监控 HTTP 免插件 Linux V4L
中图分类号:TP277 文献标识码:A 文章编号:1672-3791(2017)05(b)-0001-02
Abstract:This paper studies the modern mainstream network video monitoring system based on B/S architecture, and puts forward the design scheme of embedded Linux network video monitoring system based on B/S architecture. The network video monitoring system is based on embedded Linux platform, using the QT-Embeded of C++ Language library for the development so as to realize the client cross-platform, free download software, no plug-ins to remote video monitoring in the browser.
Key Words:Video surveillance;HTTP;Free plug-in;Linux;V4L
传统视频监控采用模拟信号传输,利用电缆的方式将视频信息传输到查看设备,其具有传输距离短、视频清晰度低以及可拓展性差的特点。随着计算机科学的发展,摄像头采集后的数据通过数模转换,将模拟信号转换成数字信号,依旧使用电缆的方式传输到显示设备,采用微处理器处理后显示到屏幕中。数字信号与模拟信号相比,其具有抗干扰性强、传输距离远的特点,采用微处理器处理也增加了不少的可拓展性。随着互联网时代的到来,网络被广泛普及应用。视频监控系统也随着网络的发展升级成为网络视频监控系统,可以供用户实时远程查看。
1 系统设计
如图1系统结构图所示,浏览器通过HTTP协议向ARM终端获取HTML页面。ARM终端服务器负责计算更新JPG文件序号,生成实时HTML页面发送到浏览器端解析。在浏览器客户端中Javascript脚本利用与ARM服务器采集图像相同的时间间隔计算最新的JPG文件序号,向服务器进行发送下载请求和显示。
Video4Linux(简称V4L),是Linux中关于视频设备的内核驱动。服务器启动线程使用摄像头利用V4L来采集视频信息,将生成的JPG图片按计算好的JPG序号保存到YAFFS文件系统中。JPG序号由15位数字组成,假设每秒生成10幅图片,那么数万年也不会造成JPG序号重复的情况,系统断电后程序依然会重新从零开始计数。由于ARM终端性能和网络的限制性,每秒生成4张左右图片比较适合。Flash内存具有空间较小的特点,对于存放数量巨大的图片会造成空间不够的情况,系统采取删除生成时间较长,客户端为保证实时性不再使用的图片。ARM终端中生成、保存以及删除文件等I/O操作需要大量时间,在控制时间时必须要把这些耗时操作考虑在内。
主线程接受浏览器传来的请求,如果请求不包含其他参数则默认请求HTML页面,如果指向JPG图片,则在当前文件系统中打开文件相应客户端请求,向客户端传输该JPG图片。
HTML的设计中浏览器缓存机制可能会造成图片更新问题,浏览器在相同域名下请求相同文件时会优先加载已缓存文件,所以在HTML文件头中需要设置禁止缓存。浏览器加载文件需要保证在ARM终端生成文件后,而且每隔一定時间必须重新向ARM终端刷新页面同步时间。
2 系统实现
2.1 摄像头采集模块
由于在摄像头采集的过程中需要大量的I/O操作,而I/O操作需要大量的时间会影响到控制采集间隔,系统在这里的处理是通过比较两次操作的时间。首先,利用V4L初始化函数设置采集图片大小以及初始化摄像头设备,记录采集开始时间,生成图片文件名并删除超过50张的缓存,采集视频信息保存到YAFFS文件系统中,等待时间间隔大于300 ms,开始新一轮的采集。
2.2 WEB服务器模块
网络服务器采用HTTP1.1协议,直接利用底层Socket协议进行TCP通信。如图2WEB服务器流程图所示,打开Socket套接字进行端口监听,捕获到从客户端发来的请求后,分析参数后建立连接发送响应,当连接断开后连接自动关闭,结束该次连接。
2.3 网页(客户端)模块
网页模块为客户端浏览器提供了一个HTML文件进行解析,浏览器从Web服务器中获得实时HTML文件后,每300 ms从Web服务器获取实时视频信息,每2分钟重新向Web服务器获取新的HTML文件来同步最新的文件序号。在HTML文件中需要设置禁止缓存的meta标签。
2.4 系统测试
在ARM终端采用动态方式加载加载摄像头驱动,启动由QT-Embeded动态编译的网络视频监控系统,在浏览器输入ARM终端的IP地址进行访问查看。如图3测试截图所示,左侧为浏览器获取到的视频播放页截图,右侧是被拍摄的实时时间,根据计算可以证明该系统的时间延迟大约在2 s以内。在测试阶段为了保证稳定性,在实际使用和生产的过程中可以调整参数提高系统的实时性,最佳可以达到1 s以内。
3 结语
该文研究了基于B/S架构的现代主流网络视频监控系统,提出了基于B/S架构的嵌入式Linux网络视频监控系统的设计方案。经过C++语言QT-Embeded库开发,实现了客户端跨平台、免下载软件、无需插件在浏览器进行远程视频监控。
系统已经在基于三星公司的S5PV210芯片,博创魔法师210套件上经过验证,已应用于环境检测系统、大棚数据采集系统以及家庭安全监测系统。系统在实际项目当中,图像清晰、流畅,运行良好。系统还可以集成在现有的物联网设备中,现有设备只需改动少量代码即可将视频服务器集成到ARM终端中,供浏览器远程观看家庭实时情况。
参考文献
[1]黄锐.家庭安防监控系统的研究[D].武汉理工大学,2014.
[2]陈宗成,邓华秋.基于ARM11的嵌入式视频传输系统的实现[J].电视技术,2013,37(9):210-213.
[3]贾文钢,庄旭菲.WEB服务网关在嵌入式网络系统中的设计与实现[J].电脑知识与技术,2010,6(31):8702-8703.



