门铃系统作为一种家居设备,人们可以利用它了解访客信息,其方便性受到人们的广泛推崇.早期的门铃系统大都采用壁挂式,挂在楼道或者离门不远的地方,可移动性差,而且门铃终端成本非常高,功能比较单一,只有查看和通话功能,无法实时了解访客信息.随着视频监控技术和智能终端设备的快速发展,门铃系统的实现越来越多样化,人们开始不满足于局限在室内的视频监控.普通的网络视频传输系统无法满足用户在任何时间,任何地点获取视频信息的需求,而且终端设备硬件设备处理能力和存储容量的局限性也越来越明显[1-2].通过购买云储存服务可解决存储容量的局限性问题,但成本较高,存储风险大,配置不灵活.Hadoop是Apache开源组织的一个分布式计算框架,可以在大量廉价的硬件设备组成的集群上运行应用程序,构建一个具有高可靠性和良好扩展性的并行分布式系统,解决视频存储和负载均衡等问题[3],相对于购买云存储服务,将有效地节省开支,灵活地扩充服务器数量,增加节点,更加安全可靠[4-5].
由于智能手机的普及,它逐渐成为实时视频监控的理想工具.Android是Google公司2007年发布的手机操作系统,2014年其全球市场占有率高达85%,在全球范围内占据着主导地位,相对于其他手机操作系统,如:iOS、WP等,具有市场占有率高且开发成本低的优势.
无线门铃系统对存储容量要求高,可变性强,传输速度稳定,基于此,本文采用Hadoop技术设计与实现了一个基于Android操作系统的无线门铃系统.
1 系统总体方案无线门铃系统是以Arm-Linux为硬件结构基础,选择ARM926EJ作为嵌入式处理器,并装有支持YUV CMOS传感器,兼容CCIR 601/CCIR 656协议,支持拍照、录像的摄像头,通过WIFI模块进行通信.首先,通过摄像头的实时拍摄来模拟门铃按下时门外的视频图像采集,并在ARM9上对图像数据进行压缩、编码,通过RTP/RTCP协议传输到以多台服务器搭建而成的、空间可拓展的Hadoop云平台上,其中一台作为NameNode节点,用来接收视频数据、请求处理和任务调度, 其他作为DataNode节点,用来存储数据[6].最后,选择Android智能手机作为客户端,安装无线门铃视频接收软件,与云平台进行消息通信和视频传输,Android智能手机便可以通过网络在任何时间地点了解监控情况.系统结构如图 1所示[6-7].
|
图 1 无线门铃系统结构图 Figure 1 Wireless doorbell system architecture diagram |
无线门铃系统主要分为3部分:门铃嵌入式设备、Hadoop云平台搭建、Android手机客户端.各个部分通过WIFI进行通信,实现无线系统的正常运作.
1.1 门铃嵌入式设备该系统的前端门铃硬件结构主要包含有摄像头和嵌入式设备.摄像头设备采用DVR,对该设备设置一个IP,用于对门铃前面的环境进行拍摄,及时地响应来访客人的信息并将采集的图像数据传递给嵌入式设备处理.其主要包含有嵌入式的处理器、存储器Nandflash、SDRAM、WIFI收发模块、LCD屏、以太网、RS-232接口等.嵌入式处理器采用具有高性能移动多媒体处理的AK98系列芯片,能够更好地满足视频数据处理的要求.嵌入式设备的硬件结构如图 2所示.
|
图 2 嵌入式设备结构图 Figure 2 Embedded device structure |
该无线门铃系统架设了一个Hadoop云平台来模拟视频文件的存储和传输.首先,下载并解压Hadoop,选取4台服务器,1台服务器master作为NameNode,JobTracker.另3台服务器slave1、slave2,slave3作为DataNode,TaskTracker,在Hadoop.env.sh配置文件中添加JAVA_HOME变量,在conf/core-site.xml中配置整个分布式系统的信息,包含名称节点的访问地址、数据节点的访问地址、系统文件的临时存放点等,在conf/mapred_site.xml、conf/masters、conf/slaves、hosts中设置好主从节点的联系方式和IP地址,然后在master节点上格式化NameNode,在master机子上输入命令hadoop namenode-format.接着,下载并安装SSH,并做无密码验证配置.最后,输入bin/start-all.sh启动Hadoop,进行环境测试,使用ssh命令检测所有节点是否正常运行,通过输入jps命令验证进程是否正常启动,调试直至Hadoop平台正常运作.
1.3 客户端视频接收和播放客户端是采用装有该系统软件的Android手机来实现的.由于传输的是视频图像数据,考虑到节约用户流量,系统设计基于WIFI环境,这样不仅有利于视频传输的畅通,还可以节省流量成本,更可以保证数据的完整性.对于某些不支持WIFI条件的环境,则考虑以3G无线网络来进行传输,以实现实时监控访问情况,可以远程操作,打破空间的限制.同时,为了保证传输的稳定和数据的存储,系统架设了Hadoop服务器作为中转站,用于对视频数据进行编码、存储和并发传输,解决了手机存储容量的问题,并提高了传输速度.
2 系统软件设计和实现无线门铃系统的软件设计主要由3部分组成:视频数据采集和处理模块、服务器视频数据存储与控制模块、手机客户端软件接收模块.
2.1 视频数据采集和处理视频的数据采集和处理模块主要集中在ARM9嵌入式设备,通过摄像头的数据采集发送到嵌入式的设备网关,嵌入式设备对视频数据进行数据的初步处理[8],具体的流程如图 3所示.该门铃系统的嵌入式设备采用Linux系统作为开发平台,Linux系统具有很好的网络支持,可以通过TCP/RTP协议进行数据传输,或者通过HTTP协议进行网络通信,并且对视频传输提供了一套接口规范V4L2(Video For Linux 2), 方便对视频设备的基础操作.
|
图 3 数据采集的程序流程图 Figure 3 Data collection program flow |
在用户按下门铃启动应用程序后,调用Init_V4L2方法申请视频数据帧缓冲区,并将地址映射到用户空间,然后把申请到的帧缓冲全部放入视频输出队列中.在放入输出队列过程中,必须对采集到的视频数据进行编码,以对大量的视频数据进行压缩,该无线门铃采用H.264进行编码,保证视频数据的质量在可接受范围内.接着建立Socket连接,创建两条线程,读取视频输出队列中的帧数据进行传输,一条传输到手机终端,并发送消息,一条传输到服务器上,进行视频数据存储,并监听手机终端反馈的消息.当采集端收到手机终端关闭视频通信的消息时,关闭所有传输线程,释放所有资源.
2.2 Hadoop云平台视频数据存储与控制为了方便视频数据的存储,无线门铃系统集成了Hadoop云平台作为服务器来管理和控制视频文件.服务器端的功能有:视频存储和调度、数据维护、身份验证.视频存储和调度是对整个门铃系统的所有视频文件进行合理的控制、备份,使服务器负载均衡.数据维护是定期地对过期的数据进行清理,避免不必要的空间浪费.身份验证是对客户端的请求进行权限校验,判断是否是合法用户.在搭建好Hadoop云平台后,利用Hadoop关键技术HDFS,将接收的视频文件,通过FileSystem.eopyFormLocalFile将分割后的文件存储到HDFS的指定位置上.反之,当接收到用户视频请求时,向Hadoop发布Map和Reduce任务,将不同节点的视频文件块重新组装成视频文件发送给用户.本文在无线门铃的服务器上部署至少有4个节点,节点可随着视频文件的增大而调整.其中一个节点用来控制视频的写入和视频文件调度叫做名称节点(NameNode),其他节点则用来存储视频文件块叫做节点(DataNode)[9].NameNode节点还要与客户端进行通信,以便手机终端可以读取访客的记录.为了更好地实现实时的效果,在第一次视频通信时,视频的数据将分发给Android手机终端和NameNode节点,之后查看视频将通过请求访问NameNode节点来实现记录回访.其详细的视频存储和下载过程如图 4所示.
|
图 4 视频存储和下载过程图 Figure 4 Video storage and download Diagram |
NameNode节点作为视频数据的汇聚节点,除了进行数据存储和调度外,对于客户端的请求进行管理也是至关重要的.当用户向Hadoop提交作业时,Hadoop会启动NameNode节点的JobTracker对任务进行初始化,将视频的分块信息和相关jar包等所需的资源拷贝到本地主机上,任务启动后,JobTracker将通知DataNode节点运行TaskTracker把结果保存到对应的主机上.整个任务执行的过程中,TaskTracker都会通过心跳机制向JobTracker发送任务执行进度等相关信息.
2.3 Android手机客户端软件设计无线门铃的Android手机客户端软件的功能模块如图 5所示.主要分为访客提醒、视频传输、视频回放、系统设置这4个功能模块.访客提醒功能是用户可以设置是否接收门铃功能,并设置提醒方式,比如响铃或震动.视频传输是用户接收到访客提醒后,发送视频通信请求,将进行视频录制并实时播放,以此来实现随时了解访客信息.视频回放是用户可以查看访客的记录.系统设置则是为了方便系统的个性化设置.
|
图 5 客户端功能模块图 Figure 5 Client function block diagram |
无线门铃系统Android手机客户端主要是实现与服务器通信,和对服务器传输的数据进行处理并在手机终端显示.服务器端已对采集到的数据进行H.264编码,并进行RTP协议封装,最后通过Socket传输到客户端,所以在客户端主要对RTP数据包进行拆装解码工作.由于Android系统上层架构不支持H.264编码,因此需要进行编写相应的编码程序通过系统库的代码调用来实现视频压缩解码,即通过C语言来定义一个编码库,将其封装在Android的系统库,供上层的Java应用程序调用,无线门铃传输模块的设计实现中采用的是JNI (Java Native Interface)技术[10],这里将不对JNI技术详细介绍.该系统采用H.264编码是移植开源的ffmpeg来实现的,在编译成功后,在目录~/xbmc-android/tools/android/packaging/xbmc/lib/armeabi-v7a/下面就有编译好的ffmpeg的库,直接提取放在android的jni目录下,就可以直接调用h264_encoder和h264_decoder类来实现编解码.
2.3.2 RTP传输实现RTP是一种实时传送协议(Real-time Transport Protocol,RTP), 常用于流媒体系统,RTP协议一般和RTCP控制协议一起协同工作.RTCP是监控服务质量并传送正在进行的会话参与者的相关信息,确保视频传输的质量和速度.RTP协议一般是建立在底层UDP协议的基础上进行传输的.RTP报文由两部分组成:报头和有效载荷.报头包含有版本号、填充标识、扩展标志、序列号、时间戳、负载类型、同步信源标识和特约信源标识等信息.RTP协议数据报一共包含12个字节的报头和不定长度的载荷,对此可以构建RtpPacket类来封装RTP协议数据报的信息,方便数据的传输[11-13].无线门铃系统客户端采用RTP协议接收从服务器端发送的数据包,放入缓冲区,并分析数据包信息,组合成帧,然后送到解码器进行播放.构建好RtpPacket类后,创建RtpSocket和RtpReceive传输工具类,并调用JNI引入的本地H.264视频拼帧器PackH264Frame和解码器DecoderNal,开始视频接收,视频数据接收的流程图如图 6所示.
|
图 6 视频数据接收流程图 Figure 6 Flow diagram of receiving video data |
按下门铃,启动摄像头进行数据采集,选择在WIFI环境下进行数据通信,并启动手机客户端的接收软件,根据手机的菜单进行操作.这里无线门铃的手机采用三星GALAXY SIII进行模拟,Android操作系统的版本为4.1.2,CPU频率1.4 GHz, 内存1 GB.选择视频通信功能后,拍照摄像头传输图像和截取手机视频画面如图 7所示.
|
图 7 摄像头截图和手机截图 Figure 7 Camera capture and mobile sreenshots |
从图 7可知,摄像头拍摄的视频图像和手机端接收的视频图像一致,可以看到视频图像清晰,数据通信正常,实现了无线门铃的基本功能.考虑到在非WIFI环境下和手机终端节点较多的情况下,出现数据不流畅、画面不清晰问题,应该合理地配置节点数,选择稳定的网络环境,这是保证数据正常传输的重要手段,其他优化措施还有待研发[14-15].
4 结束语本文根据无线门铃系统的实际需求,结合当前流行的Hadoop云存储系统和Android手机开发模式,开发了一套门铃系统,解决了传统门铃不能随时随地了解访客信息的需求和视频存储容量的问题.该门铃系统在云平台上进行视频数据存储,采用RTP协议进行数据传输,利用Socket实现了服务器与客户端的通信,最终在Android系统上测试成功,效果良好.无线门铃作为一种新型的访客控制系统,随着Android手机设备配置越来越高,会实现更高质量的视频通信,更方便的用户使用.因而,基于云平台的WIFI无线门铃系统值得进一步研究,在稳定、高效、性能方面得到进一步改进.
| [1] |
徐兵. 基于网络的智能定时视频监控系统设计[J].
计算机测量与控制, 2011, 8: 46-48.
XU B. Design about system of intelligent timely visual supervision based on network[J]. Computer Measurement & Control, 2011, 8: 46-48. |
| [2] |
孙松源, 吴建国. 基于RTP和Android的视频传输的研究实现方法[J].
电脑知识与技术, 2012, 8(4): 903-905.
SUN S Y, WU J G. Research and achieve of video transmission based on RTP and Android[J]. Computer Knowledge and Technology, 2012, 8(4): 903-905. |
| [3] |
刘琨, 李爱菊, 董龙江. 基于Hadoop的云存储的研究及实现[J].
微计算机信息, 2011, 27(7): 200-204.
LIU K, LI A J, DONG L J. Research on cloud data storage based on Hadoop and its implementation[J]. Control & Automation, 2011, 27(7): 200-204. |
| [4] | DENG Y H. What is the future of disk drives, death or rebirth?[J]. ACM Computing Surveys, 2011, 43(3): Article 23. |
| [5] | XIE J J, DENG Y H, ZHOU K. Totoro: A scalable and fault-tolerant data center network by using backup port[C]//In Proceedings of the 10th IFIP International Conference on Network and Parallel Computing.Guiyang: Springer Berlin Heidelberg, 2013. |
| [6] | 梁师师. 基于Hadoop的视频监控系统的设计与实现[D]. 呼和浩特: 内蒙古大学计算机学院, 2014. |
| [7] | ZENG H, CHE H X. Design of mobile video surveillance based on android[C]//International Conference on Computer Science and Service System.Nanning:IEEE, 2012, 765-768. |
| [8] | MUZZAMMIL BIN S K, ANUAR A, BINTI ISMALL N A, et al. Real-time video processing using native programming on Android platform[C]//IEEE 8th International Colloquium on Signal Processing and its Applications.Melaka:IEEE, 2012:276-281. |
| [9] |
段利文. 基于Android手机的无线视频门禁系统应用研究[J].
电视技术, 2013, 37(15): 201-204.
DUAN L W. Research on wireless video access control system application based on Android smart phone[J]. Video Engineering, 2013, 37(15): 201-204. DOI: 10.3969/j.issn.1002-8692.2013.15.054. |
| [10] | VUN N, OOI Y H.Implementation of an Android phone based video streamer[C]//IEEE/ACM International Conference on Green Computing and Communications & 2010 IEEE/ACM International Conference on Cyber, Physical and Social Computing.Hangzhou:IEEE, 2010. |
| [11] | 王红霞. 基于Android和H. 264的实时监控客户端的设计与实现[D]. 哈尔滨: 哈尔滨工业大学计算机科学与技术学院, 2011. |
| [12] | 王倩. 基于Android端到端实时无线视频传输系统[D]. 南京: 南京邮电大学通信与信息工程学院, 2013. |
| [13] | 赵亮. 基于Android的视频监控终端软件设计[D]. 西安: 西安科技大学通信与信息工程学院, 2013. |
| [14] |
任克强, 曹宏强. 基于Android和H.264的实时视频监控系统[J].
计算机测量与控制, 2013, 21(9): 18-22.
REN K Q, CAO H Q. Real-time video monitoring system based on Android and H.264[J]. Computer Measurement & Control, 2013, 21(9): 18-22. |
| [15] |
童方圆, 于强. 基于Android的实时视频流传输系统[J].
计算机工程与设计, 2012, 33(12): 4640-4643.
TONG F Y, YU Q. Real-time video stream transport system based on Android[J]. Computer Engineering and Design, 2012, 33(12): 4640-4643. |
2016, Vol. 33