基于QT的远程视频监控系统

2019-05-05 00:53张娜王侃杨琳
商洛学院学报 2019年2期
关键词:开发板客户端传输

张娜,王侃,杨琳

(商洛学院 电子信息与电气工程学院,陕西商洛726000)

远程视频监控技术是集合了网络技术、通信技术、传感器技术为一体的综合性技术,根据人们对视频信息的时效性、灵活性等多方面高要求的特点,得到市场和人们的集中关注[1-2]。从生活的各种场合可以看到,视频监控系统已经从早先的军事需求、银行安全等高级别的安防领域扩展到现在的校园安全、工业生产、农业生产和交通旅游等很多领域,充分体现了其专业性和可靠性的优点[3-4]。针对传统视频监控系统安全性差、时效性差、人力成本高且无法在客户端随时随地查看监控效果等缺点[5],本文采用嵌入式Linux的操作系统、USB摄像头、TCP传输协议及QT软件设计实现远程视频图像数据采集、传输及在客户端实时显示的功能。

1 视频监控系统的总体设计

视频监控系统采用嵌入式Linux的操作系统作为开发的核心,系统通过服务器操控USB摄像头设备进行采集视频数据信息,经过JPEG编码、解码压缩控制数据的采集,最终采用无线网络通讯进行数据传输的过程。在PC机(也就是客户端)上,通过网络传输得到数据,进行数据解析拿到有效格式并进行图像显示,最终实现视频监控系统。视频监控系统结构如图1所示。

1.1 硬件平台的构建

本系统使用ITop-4412开发板作为核心板,ITop-4412这款开发板的处理器采取ARMA9核心处理器,板上安装了能实现很多功能的硬件[6]。

1.2 软件平台的搭建

主要包括环境搭建、Uboot移植、内核移植、根文件系统制作四方面。

1.2.1 环境搭建

在开发之前,需要进行交叉编译环境的搭建,就是需要对系统进行文件更改和配置,并且安装交叉编译的工具链这两个步骤[7]。在Ubuntu虚拟机的开发环境中,要将现在所需要的文件进行编译,可以得到想要的程序与开发用的操作系统等,并进行设置操作,最终就需要上传到系统需要的ARM开发板使用。

搭建具体步骤为:

1)进入虚拟机情况下,首先建立一个新目次在home下,利用mkdir号令建立,号令为mkdir/home/arm;

2)打开刚刚创建的目录arm,这时需要下载工具包,然后再把要用的编译工具包放到arm目录中;

3)把工具包解压完成后,需要修改现在已经有的环境所要配置的文件:sudo vim/etc/profile,profile文件中添加arm-Linux-的路径:export PATH=$PATH,退出文件编译器;

4)然后就要更新一下刚刚修改过的profile配置文件:打开这个文件,然后用命令去更新,Source/etc/profile;

5)检查是否已经安装成功。

环境是已经完全搭建好了,需要检查是不是好用,首先是打开虚拟机,需要把写好的代码进行编译,看看有没有报错误,没有问题之后,使用arm的编译工具再进行编译一次,打开串口调试工具,查看系统文件的信息,然后就要进行移植了。

1.2.2 Uboot移植

Uboot移植步骤为:

1)首先要修改Makefile文件,在文件中加上交叉编译工具链所在的路径,添加如下信息:CROSS_COMPFILE:=;

2)make clean(清除之前的编译);

3)配置要使用的Uboot信息(把系统信息编程私有的,主要针对要移植的开发板做相应修改);

4)最后需要将Uboot进行编译,再使用make命令生成目标文件,在生成的文件中有三个需要着重看一下,Uboot(elf文件)、Uboot.bin(二进制文件)、System.map(符号映射表),后面还要再进行更改。

再次进行编译Uboot,在串口调试终端上复位可以看到图2串口信息。

图2 串口信息图

1.2.3 内核移植

1)解压:把压缩包Linux-3.14.tar.xz首先复制在/home/linux目录下,然后通过tar命令进行解压,解压完之后就打开linux-3.14文件;

2)对最上层的目录Makefile文件进行修改,主要是修改体系架构和交叉编译器;

3)导入默认配置$makeexynos_defconfig;

4)使用make进行编译,需要把内核全部编译。

完成上述的操作步骤,就会在目录下新生成一个文件,这个zImage是已经被压缩过之后的镜像文件。

1.2.4 根文件系统制作

根文件系统制作的步骤为:

1)在官网上将源码包保存在本地,下载地址路径http://busybox.net/downloads/;

2)使用tar命令,把下载好的文件包进行解压,并且保存到新建目录下;

3)在当前目录下,打开源码的文件,使用命令cd;

4)对源码编译;

5)安装busybox:要安装的路径是在/linux目录下,也就是源码的同一级目录下;

6)打开上一步安装好的那一级目录,创建需要的目录,也就是系统文件夹;

7)添加库:删掉不需要的库,保证库的容量不能超过8 M;

8)增添系统的启动文件,需要在etc下添加文件inittab。

重新编译内核,需要注意的是新制作的文件系统尺寸若超出8 M,删除不需要的库文件。

2 服务器端的设计

该嵌入式视频监控的软件设计包括了服务端和客户端。服务端是实现了在特定条件下对视频采集的部分和通过TCP协议网络进行传输的部分;客户端部分主要是接受所采集到的视频数据和通过QT软件处理进行视频显示[8]。如图3是服务器端软件功能处理的流程图。

图3 服务器端软件流程图

2.1 视频采集的实现

Video4Linux2(V4L2)是在Linux操作系统中有关视频设备的相关内核驱动,设备包括了USB接口摄像头和视频捕捉卡等[9]。利用V4L2视频采集接口采集图片,并将采集到的图片转换为jpeg格式的客户端数据包。

设计思路:本模块采用线程处理,提供一个线程接口函数给服务器,开启线程后便可开始图片的采集与转换得到图片数据。

2.2 视频图像的网络传输

本系统使用TCP/IP协议进行视频流的传输,通过使用socket的编程实现代码的编写,在服务器端进行监控,一直等待客户端的请求消息,并且发送USB摄像头获取到的视频数据。代码中通过调用listenfd=socket(AF_INET,SOCK_STREAM,0);创建套接字listenfd进行监控客户端的连接情况。

使用socket建立起网络之后,通过函数tcp_server_send进行数据传输。

3 客户端的设计及实现

3.1 客户端设计

客户端接收到服务器传输过来的数据并使用QT软件进行图像视频显示。QT本身是一个可跨平台的框架,它是基于C++的应用开发的[10]。在客户端的设计中,首先使用QT软件平台中已提供的网络协议,进行实现客户端与服务器的两端连接,接下来客户端需要向服务器发送数据包进行请求,收到请求回应后,通过结构体的数据类型进行图像接收,显示图像时就要用到QT中自带的类QPixmap,这个类的功能是能够接收单个文件在画板上显示文件内容,前提是需要知道文件路径,并且路径的格式是字符串,使用QPainter里面的drawPixmap()这个函数,将需要显示的文件绘制到设备上面。

qDebug()<<"qt_jpeg size="<

pixmap->loadFromData((unsigned char*)ppic->jpeg,ppic->jpeg_len,"JPEG");

ui->label->setPixmap(*pixmap);

timer->start(60);

3.2 客户端实现

通过使用QT中的TCP协议实现了客户端与服务器的连接,并进行视频数据显示,客户端初始化效果如图4所示,按下开始按钮,建立网络通信,开始进行显示视频数据,效果如图5所示,客户端正常运行。

图4 客户端初始化效果图

图5 运行效果图

3.3 数据分析

在相对稳定的网络环境下,同时保证数据源质量的前提下,对采集、接收到的数据包进行统计,结果如表1所示。

表1 采集和接收到的数据包统计

4 结语

本文是基于QT的远程视频监控系统设计,使用Linux操作系统搭建环境,通过USB摄像头连接在ITop-4412开发板采集视频图像数据,用TCP传输协议通过网络传送给客户端,使用QT软件设计进行视频显示,最终通过交叉编译工具将系统移植到ITop-4412开发板。实验结果表明,系统能实时、稳定地传输视频数据,并取得了良好的监控效果,该系统具有实时性强、可扩展性强、灵活性高的优点,达到了方案的预期效果。

猜你喜欢
开发板客户端传输
混合型随机微分方程的传输不等式
牵引8K超高清传输时代 FIBBR Pure38K
基于STM32H7的FDCAN通信系统设计与实现∗
如何看待传统媒体新闻客户端的“断舍离”?
关于无线电力传输的探究
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
支持长距离4K HDR传输 AudioQuest Pearl、 Forest、 Cinnamon HDMI线
浅析单片机开发板的设计与制作