基于民居的可移动远程视频监控系统的研究与分析

(整期优先)网络出版时间:2018-12-22
/ 2

基于民居的可移动远程视频监控系统的研究与分析

邵汉卿罗燕潘建华赵琪辉张剑明梁梦颖

绍兴市质量技术监督检测院浙江省绍兴市312366

摘要:本文主要探究了基于民居的利用移动设备操控民居中的摄像头来实现远程监控系统的设计与应用。

关键词:民居;可移动远程视频;监控系统

一、民居的可移动远程视频监控系统的设计

1、上位机程序

采用QtCreator[1,3-5]搭建上位机的图形用户界面,并通过socket协议与监控终端通信,实现视频的接收、播放以及监控终端的移动控制。

1.1socket协议

socket通信协议可分为3类:原始socket通信主要用于开发底层通信,编程较繁琐;流式socket通信是基于TCP协议,数据传输量大且安全、稳定;数据报socket是基于UDP协议,其通信时不需要接收端确认连接,虽然编程相对简单,但接收到的数据可能不准确。本系统采用流式socket通信,其服务器端的通信步骤如下:

①为客户创建一个套接字;②给创建的套接字命名;③绑定套接字;④创建一个连接队列,开始等待客户端的连接;⑤连接到一个客户端;⑥对连接到的客户端进行数据的读写。

服务器端采用的是多线程编程技术,指令的传输和视频数据的传输互不影响,可实现多个客户同时连接到服务器。服务器将摄像头采集到的视频数据存储在内存中,等待客户端连接;每当一个客户端连接时,就会创建一个线程和该客户端进行数据通信。上位机端的socket通信编程是在Qt中调用QTcpSocket类来实现,主要步骤如下:①创建QTcpSocket类对象。②绑定服务器的IP地址以及端口号。③使用信号与槽机制,接收连接信号和连接失败信号。④在槽函数中实现对数据的读写。⑤销毁QTcpSocket对象。

1.2监控终端的移动控制

上位机程序通过发送特定字符串,可实现监控终端的移动以及摄像头的升降与旋转。采用一个QTcpSocket类的对象controlsocket负责上位机和下位机的控制指令传输。当客户端连接到服务器时,将会通过槽函数SendMessageToServer发送字符串”GET/?action=control”给视频服务器,让服务器创建一个线程接收客户端接下来传输的控制指令。

上位机图形界面(GUI)中设置了4个按钮来控制监控终端的前进、后退、左转、后转,并设置垂直和水平方向的两个滚动条来控制摄像头的升降与转动。每当按钮或滚动条状态被改变,就会进入到响应的槽函数中,并调用SendControlToServer函数,向服务器写入相应的指令字符,服务器收到该指令后会通过串口将其转发给单片机,由单片机负责执行。

2、图像采集

在Linux系统中移植一个MJPG-Streamer视频服务器,由其实现监控终端的图像采集与传送。MJPG-Streamer的源代码可在其官方网站上免费获取。该软件包含一系列插件,通过输入插件可读取USB摄像头的图像数据,再通过输出插件以M-JPEG格式输出给上位机。

3、视频数据接收与显示

在Qt中实现socket通信首先要创建一个QTcpSocket类的对象GetPictureFromSocket,当连接到服务器时,就会连接到槽函数ServerConnect,在该函数中向服务器发送字符串”GET/?action=stream”,服务器接收到该字符串指令后,将会持续不断的发送视频数据给GetPictureFromSocket对象建立的这个客户端。视频传输的本质就是实时的传输图片,服务器传输过来的图像格式为JPEG格式,以0xffd8开始,0xffd9结束,根据这一规则就可以完整的接收一张图片信息。使用Qt的定时器不断去刷新接收到的图片,这样就形成了视频。使用定时器的操作步骤主要为:①创建一个QTimer对象;②使用start函数启动定时器,并设置定时的时间;③使用信号与槽机制,当定时时间到时,连接到对应的槽函数。程序中定时时间为35ms,即每35ms刷新一次图片。当接收到完整的一张图片时,就触发一个Pic_draw_signal信号并连接到Picture_draw槽函数,由这一函数将接收到的图像数据以JPEG的格式装载到QPixmap的一个对象中,最后使用QLable类对象的setPixmap函数显示到界面上。

二、民居的可移动远程视频监控系统的测试与应用效果

1、移动设备视频监控

智能移动远程视频监控系统的主要功能便是移动视频监控,而其实现视频监控、查看以及播放的功能主要是通过摄像机和移动端程序的Camera来实现,因此该模块的模块功能的测试主要可分为视频拍照、摄像、监控以及视频编码4部分进行,才能保证其检测结果满足用户监控的功能需求。在实际测试过程中为了保证监控视频平稳和有效的播放,测试人员可采用智能移动设备对家居视频设备监控视频数据进行解析播放测试,由于移动平台端设备只能对视频进行接受和解析播放,因此系统需提前运行系统中的USB摄像头监控软件,运行过程可按以下步骤进行:先打开家居视频设备端的APP程序,再从中开启USB摄像头视频监控服务端,在摄像头监控界面将USB摄像头打开。然后再进行移动设备端设置视频分辨率的界面,根据用户实际需求选择合理的视频分辨率。视频分辨率设置完成后,进行主界面中的视频播放界面,家居视频设备摄像头所采集的视频数据便会在播放界面的视频控件中播放出来,最后用户登录系统成功后,可以选择软件主界面中的传输视频按钮,并做好上述的连接与发现操作,再进行循环判断,成功连接后,系统便会自动显示RTP视频数据流组帧,从而帮助用户实现对其家庭的远程视频监控控制。

2、系统运行环境测试

在民居家庭WiFi无线网络环境下对该监测系统进行测试,将带有Android系统的开发板嵌入到家居视频设备端,并连接到家居视频设备里的电路,将Android系统开发的SmartAc⁃cessAPP软件嵌入于移动终端运行,测试结果表明该智能移动视频监控系统支持IOS、Android等操作系统。

3、设备发现与连接测试

在智能移动监控设备正式投入实践运用之前,需进行设备之间的连接与发现功能测试,该功能测试主要是基于AllJoyn框架下进行,由于该种家居视频设备端服务可采用移动端设备进行搜索,因此可以在家庭局域网环境下,直接利用移动端设备通过AllJoyn通信模型进行连接搜索,当其成功搜索到家居视频设备端设备时,便会与其进行连接,并将连接结果通过Session会话机制保存至会话列表,以便用户进行选择连接使用,若会话未超时,当用户下次再连接时系统便会自动进行连接,则需对设备搜索重新建立连接。设备发现与连接测试完成后,用户需在移动终端设备上和家居视频设备端运行An⁃droidMonitorAPP软件,并确保网络的连接均处于同一家庭无线路由器中,再在家居视频设备端选择并运行其中的服务方设备程序,具体方法为:当用户点击APP软件主界面左上方的搜索按钮,并对当前设备在同一网段内的其他可连接的设备进行搜索,搜索完成后将查找结果以list形式存储在列表。若用点击主界面中的发现设备,系统便会自动切换至连接验证界面,此时用户需输入连接密码才能连接成功(各设备的连接密码在设置->密码中具有显示,用户可自行查看),当用户验证和连接成功后,界面上便会显示出Toast的消息,并且受控端会将监控视频的实时画面在视频窗口进行播放。若用户验证过程中出现密码属于措施或输入非法字符,界面也会提示和显示相应的错误。

结束语

基于民居建筑的特点和居民对移动视频监控技术的需求,本文提出了一种应用于智能家居中的安全监控操作的综合控制系统—AllJoyn框架智能移动远程视频监控系统,其不仅具有建设成本低、灵活性高、布线安装简便等良好建设优势,并且还具有监控精准、实时、安全、可移动化等多种优势,其极大地扩大了视频远程监控技术的监控范围,对保障民居人们的生活安全具有重要的现实意义。

参考文献

[1]王言匀.基于Android平台的移动视频监控系统的设计与实现[D].湖南大学,2016.

[2]冯辛.异构网络环境下视频数据编码、传输与存储技术研究[D].北京工业大学,2016.

[3]孙俊龙.移动机器人远程视频传输控制研究[D].南昌大学,2016.

[4]宣树源.区域移动通信网络公共视频监控项目的设计与实现[D].兰州交通大学,2016.