基于4G的无线视频监控系统

  4G时代的来临,无线视频监控与具体行业的深度融合,将成为移动视频监控市场发展的必然趋势。4G技术的高带宽、可移动性,无疑将促使安防监控和移动通信的深度融合,安防监控也将会实现一个从模拟监控、数字监控、有线网络监控向无线视频监控的过渡。4G网络带宽的提升,将大大拓宽无线移动监控的应用领域,使那些原本没有无线移动监控需求的领域和用户,也能轻松应用移动监控了。可以预见,未来,基于4G的无线视频应用起来越广泛。

  开发硬件:x86处理器、B22开发套件、USB摄像头

  开发环境:Ubuntu12.04内核是Linux3.2.0

 一.总体结构描述

系统分为4个模块:

1、串口操作模块:系统通过往串口写AT指令来控制B51模块,通过读B51从串口返回来的数据判断其处于什么状态,实现B51的数据连接功能。

2、视频采集模块:系统通过调用v4l2驱动对摄像头进行图像的采集,v4l2为linux下的视频驱动提供了统一的接口,我们采用的是Lenovo B490s自带的摄像头。

3、视频压缩模块:系统将采集到的视频数据在此进行压缩编码成h.264格式的视频码流。H.264就是一种新型的视频编码格式,H.264的优点在于更高的数据压缩比,在同等的图像质量条件下,H.264的数据压缩比能比当前DVD系统中使用的MPEG-2高2-3倍,比MPEG-4高1.5-2倍,在MPEG-2需要6Mbps的传输速率匹配时,H.264只需要1Mbps-2Mbps的传输速率。

4、视频传输模块:模块用于发送压缩编码完成的数据,传送视频流到服务器。

系统方案详解

(一)串口操作

主进程:

 1.打开串口:使用open()函数打开一个串口用于写AT指令给B51和读取B51的返回数据

 2、初始化串口:设置串口的通信协议,如波特率、数据位、校验位等信息

 3、初始化模块:向串口写入“AT+CFUN=1”指令控制B51开机,读串口若返回值为

“+CEREG:1”表示开机成功。 再向串口写入“AT^DSTMEX=1,7”设置注册网络只能是     TD-LTE!

4、查询驻留网络:向串口写入“AT+COPS?”查询B51当前所处的网络状态,读串口若返

回“+COPS:0,0,“CHINA MOBILE ”,7”表明驻留网络为TD-LTE! 

5、激活数据业务:向串口写入字符串“AT+CGDATA=“M-0000”,1”开启数据业务,读串口若返回“CONNECT”,表明连网成功,失败则返回继续激活数据业务。

(二)视频采集模块(子进程 )

 首先,打开视频设备文件,进行视频采集的参数初始化,通过V4L2接口设置视频图像的采集窗口、采集的点阵大小和格式;

 其次,申请若干视频采集的帧缓冲区,并将这些帧缓冲区从内核空间映射到用户空间,便于应用程序读取/处理视频数据;

    第三,将申请到的帧缓冲区在视频采集输入队列排队,并启动视频采集;

 第四,驱动开始视频数据的采集,应用程序从视频采集输出队列取出帧缓冲区,处理完后,将帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;

    第五,停止视频采集。

(三)视频压缩编码、传输模块(子进程)

 1、创建socket:通过调用系统函数socket()来创建一个socket套接字。

 2、初始化socket:将套接字绑定上服务器的IP地址和端口号,并建立与服务器的连接。

 3、初始化编码器:设置输入视频数据的帧格式、帧率、帧大小等信息。

 4、读pipe:将视频采集模块写入管道中的数据读取出来,存入缓存中。

 5、压缩编码:将缓存中的数据压缩编码成h.264格式的视频流。

 6、写入socket:调用write()函数将缓存中的数据写入到套接字中,通过套接字传送到服务器上。

 7、判断传送图片帧数是否满足需要,若是则结束,否则返回继续读取视频采集模块写入管道的数据。