基于树莓派云视频流媒体的远程监控系统*
2018-12-07,,
,,
(陕西工业职业技术学院 电气工程学院,咸阳 712000)
引 言
人们从外界接收的各种信息中80%以上都是通过视觉获取的,所以网络技术和多媒体技术发展以来,视频技术尤其是视频监控技术愈来愈成为人们关注的热点技术之一。在视频监控技术中,融合现今发展迅猛的嵌入式技术、4G无线通信技术以及云技术设计的远程无线视频监控系统,具有监控范围更广、监控形式更灵活、监控画面更清晰等特点,能满足用户在任何时间、任何地点通过手机或电脑方便实现对特定区域进行视频监控的需求,可以广泛应用于医疗、安防、教育、家居等众多领域,为人们的生活保驾护航。
1 系统方案设计
为了对监测区域进行远程、实时监控,所设计的视频监控系统由视频处理前端、3G/4G、Interntet网络、云服务器和用户几部分组成,系统组网框图如图1所示。其中,视频处理前端由视频图像采集模块、嵌入式微处理器和4G无线通信模块构成,完成对监测区域视频图像的采集和处理,并经由4G无线通信模块实现视频监控系统与移动网络到互联网的连接,通过该连接形成的通路完成视频监控图像的远程传输。为了使处于移动网络的智能手机终端用户或Internet网络的PC机用户能够观看监测区域的实时画面,需要利用一台位于公网的阿里云服务器进行中转,用户通过访问阿里云的Web服务器即可在线观看监控区域的实时视频。
图1 系统组网框图
2 系统硬件设计
图2 系统硬件结构框图
视频监控系统的硬件包括嵌入式微处理器、视频图像采集模块和4G无线通信模块三部分。嵌入式微处理器是视频监控系统的核心部分,一方面管理视频图像采集模块对视频图像数据进行采集,另一方面管理4G无线通信模块实现无线网络通信。本文设计的视频监控系统以树莓派3代B型作为嵌入式开发平台进行系统设计,分别通过USB接口连接视频图像采集模块,通过串口与4G无线通信模块进行通信。系统硬件结构框图如图2所示。
2.1 树莓派开发平台
树莓派是一款信用卡大小的小型电脑,支持Linux操作系统,接口丰富,功能强大,价格低廉,可靠性高,扩展方便,开放性好,成为开源硬件领域中较为高阶的硬件产品[1]而备受欢迎。树莓派3代B型使用Broadcom BCM2837作为其系统芯片,运行频率为1.2 GHz,采用64位4核ARM Cortex-A53作为CPU中央处理器,具有1 GB的RAM存储器,直接板载802.11n无线局域网和蓝牙4.1。在接口方面,树莓派3代B型拥有4个USB2.0接口,1个40针的GPIO接口,1个10/100M以太网口,以及MicroSD卡插槽和音视频接口等,整块硬件具有集成度高、运行速度快、性能优良、外设丰富、二次开发方便等优点[2]。
2.2 视频图像采集模块
视频监控系统中的视频图像采集模块直接使用了免驱动的罗技高清摄像头C270,摄像头像素300万,USB2.0接口,自动对焦,内置麦克风,每秒最大传输30帧图像,默认的图像输出格式为压缩的MJPEG格式。该款摄像头性价比较高,与嵌入式系统的兼容性强,它将视频图像的压缩在摄像头模块内进行,这样可以减少USB接口的带宽压力,也可降低核心处理器的数据处理能力。
2.3 4G无线通信模块
4G无线通信模块选用的是SIMCom公司的SIM7100C 4G LTE产品,有87个引脚,正常通信需要适配SIM卡,移动、联通、电信SIM卡均支持,本监控系统选用了电信的SIM卡。 4G无线通信模块通过71和68引脚与树莓派处理器进行数据通信。59和82引脚连接两个4G全频天线,54引脚连接运行模式指示灯,51引脚连接网络状态指示灯,4引脚连接复位电路,17~20引脚连接USIM卡座。SIM7100C电路连接示意图如图3所示。
图3 SIM7100C电路连接示意图
3 系统软件设计
软件设计是实现视频监控系统功能的灵魂,包括搭建软件开发环境,搭建流媒体服务器进行视频图像采集与传输,4G LTE网络连接以及云服务器设置。本系统的主控制器基于ARM Cortex-A53,树莓派官方网站提供了Raspbian Linux操作系统,这是一款以Debian操作系统为基础,根据树莓派硬件平台定制的操作系统,具有丰富的开源软件包,安装简单、易操作,此处不再赘述。
3.1 搭建流媒体服务器进行视频图像采集与传输
流媒体是指以流方式在网络中传送音视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式,流媒体的典型特征是把连续的音视频信息压缩后放到网络服务器上,用户可以边下载边观看,而不必等待整个文件下载完毕。由于流媒体技术的优越性而广泛应用于视频会议、远程教育、远程医疗和在线直播系统中。流媒体技术的实现需要流媒体服务器软件支持,用于对流媒体内容进行采集、缓存、调度和传输播放。本监控系统选择了一款基于Linux操作系统的轻量级开源视频服务器mjpg-streamer,它可以从USB摄像头采集视频图像,并以流的形式通过基于IP的网络传输到各种类型的浏览器上[3]。
树莓派上搭建mjpg-streamer服务器并捕获USB摄像头视频图像到Web浏览器的过程如下:
① 在Raspberry Pi上使用git下载mjpg-streamer的源代码到树莓派系统某个目录,解压(下载网址为https://github.com/jacksonliam/mjpg-streamer);
② 通过sudo apt-get install安装cmake(编译用)和支持库libjpeg8-dev;
③ 进入mjpg-streamer-experimental底层目录,进行完全编译:Make clean all;
④ 通过./ mjpg_streamer-i"./plugins/input_uvc/input_uvc.so-f5-r120x160"-o"./plugins/output_http/output_http.so -w/www命令启动视频流媒体服务器;
⑤ 通过电脑访问Raspberry Pi的IP地址即可查看视频图像(http:// RaspberryPi IP:8080)。
在启动流媒体服务器中用到了两个非常重要的组件input_uvc.so和output_http.so。input_uvc.so是输入组件,通过调用V4L2(Video for Linux two)的接口函数完成USB摄像头的初始化以及视频数据采集,流程图如图4所示。input_uvc.so组件从摄像头读取视频数据,同时将视频图片压缩为JPEG格式,然后将视频数据复制到内存中。output_http.so是输出组件,是一个完全符合http标准的Web服务器,它将输入组件压缩为JPEG格式的图片,根据现有MJPEG标准以http视频数据流的形式输出。用户可以通过Web浏览器打开网页查看视频图像信息[4]。
图4 视频图像采集流程图
3.2 4G无线通信模块SIM7100C LTE网络连接
4G无线通信模块SIM7100C的主要功能是实现视频监控系统与3G/4G移动网络的连接,通过该连接形成的通路完成视频监控图像的远程传输。SIM7100C通过树莓派扩展口的串口进行连接,通过对Linux上的PPP拨号软件进行相关设置实现SIM卡与3G/4G移动网络的连接。PPP拨号软件的设置流程如下:联网下载并安装PPP拨号软件包,然后下载fona配置文件到etc/ppp/peers目录下,接着修改fona这个拨号配置文件,将波特率改为921 600,端口文件改为/dev/ttyAMA0,该设备文件为4G无线通信模块虚拟出的拨号串口,再将网络接入点设置为中国移动:connect"/usr/sbin/chat-v-f/etc/chatscripts/ gprs-T cmnet,最后就可以通过拨号指令拨号。拨号成功后表示4G 无线数据通信网络连接成功,随后即可进行网速测试、数据的http下载及FTP上传测试。
3.3 云服务器设置
位于公网的用户是无法在线观看私有监控设备提供的监控画面的,为此在进行视频监控系统设计过程中租用了一台位于公网的阿里云服务器进行中转,实质是在阿里云服务器上搭建了一个反向代理服务器Nginx,该代理服务器接收公网上的用户请求后,将其转发给私网的视频监控系统,并将从监控系统上得到的视频图像返回给公网上的客户端。在阿里云服务器上部署反向代理服务器Nginx,通过SSH隧道技术解决公网用户访问私网设备资源的问题。反向代理原理框图如图5所示[5]。
图5 反向代理原理框图
系统通过密码登录阿里云服务器进行Nginx反向代理服务器的安装及配置。云服务器对公网用户提供9090端口以供访问,对视频监控系统提供12345端口以供使用,同时在树莓派开发平台上利用SSH隧道技术建立一条反向隧道,将云服务器侧的12345端口和树莓派侧的8080端口连接起来,这样当远端的公网用户或移动设备用户访问云服务器IP的9090端口时,请求数据经过云服务器的12345端口转发到树莓派平台的8080端口,从而完成了公网设备和私网设备之间的间接通信。
4 系统测试
系统整体设计完成后,给系统上电,等系统运行状态正常后进行全自动运行测试,通过联网的手机或电脑在浏览器中输入地址http://121.40.125.14:9090/stream.html,测试结果如图6所示。其中,121.40.125.14是云服务器的IP地址,9090端口是云服务器对公网侧访问的端口,图6表示位于3G/4G移动网络的移动终端用户或公网侧的PC机用户通过访问阿里云的Web服务器,实际上是在浏览树莓派上mjpg-streamer流媒体服务器所提供的在线视频服务,看到的视频图像清晰,延时较小,监控系统性能良好。
图6 系统全自动运行测试