APP下载

基于云存储的Android 手机视频监控和流量共享系统设计

2015-08-26林筑英

电子设计工程 2015年24期
关键词:服务器端热点客户端

田 甜, 林筑英

(北京工业大学 北京 100124)

视频监控系统是指利用视频相关技术对某些特定区域或场景进行拍摄,并且实时显示、记录保存现场图像的电子网络系统[1]。 它是一个集计算机多媒体处理、通信网络传输、信号编解码技术为一体的系统。

在传统有线网络监控系统中,视频前端的采集设备严格依赖网络布线,部署不灵活,系统整体成本高。 随着3G/4G 网络的快速普及以及迅猛发展, 通过3G/4G 网络接入Internet的视频监控系统得以快速发展。 现有的视频监控系统主要有两种方式。 在执法部门使用的视频监控系统中,系统的采集前端使用具有DSP 处理模块和高效3G 传输芯片, 且为固定的,这种系统的成本较高,安装部署不方便。 另外,一些视频监控系统将移动终端作为监控端而非视频采集端,通过无线网络实现随时随地查看监控。 这种方式依然需要固定的视频采集端,部署不够灵活。而以通过3G/4G 网络接入Internet 的移动设备作为视频监控终端的移动视频监控系统凭借其部署灵活、使用方便、成本较低的特点,成为监控系统发展的趋势。

与此同时, 随着硬件、 软件技术的迅速发展, 安装了Android 系统的智能手机应用的越来越广泛。 智能手机往往具有较高的CPU 主频,较大的内存资源,较强的多媒体处理能力以及稳定的无线通信模块。 同时,Android 系统的开源特征也使得程序人员开发自己的移动视频监控系统成为了可能。 所以,将智能手机与视频监控结合,具有较大的实用价值及商用市场前景。

1 研究思路及总体设计

1.1 解决方案的选择

在移动监控系统中,智能手机监控视频采集端将压缩后的视频数据通过TCP 或专属协议传输至服务器端,系统授权的用户可以通过各种终端平台接入系统,对特定监控前端进行查看,实现指挥调度、管理存储等功能。 这就要求服务器端具有存储大量数据的能力。 然而,视频资源往往会占据较大的存储空间,采用单台服务器存储所有的视频监控数据显然是不可能的。 因此,本研究采用云存储的方式存储所有的视频监控数据。

现有的商业化的云存储解决方案有很多, 比如Google Cloud, Microsoft Azure, Amazon Web Services, 阿里云, 百度云。 但是, 由于大部分视频监控数据具有较强的私密性,因此,将视频监控资源上传到商业化的云存储平台显然是不合理的。 所以,借助于开源的OwnCloud 平台,本研究开发了自己的云存储平台。

由于音视频数据量较大,因此,音视频传输过程中往往会消耗大量的流量。 根据调研发现,大部分智能手机用户都定制了价格不一、流量大小不等的流量包。 一些智能手机用户,由于当月浏览视频、下载数据较多,造成用户的流量不够用。而另一些用户则可能出现流量过剩的情况。因此,本研究在系统中增加了流量共享功能,在智能手机用户的3G/4G 流量不足的情况下,可以共享其他手机用户的流量。

移动视频监控系统的研究已更加广泛。 文献[2]概述了远程无线实时监控系统的多种设计。 关于采集端的选择,一些研究采用了开源的操作系统,并选择嵌入式终端[3]。 但是这种方式花费较高,且对硬件处理能力的要求较高。 另外一些文献采用智能手机作为采集端[4],并利用了DirectShow 框架。 在无线传输方式上, 一些研究采用了非2G/3G/4G 的方式。 例如,文献[5]中駣用的是WiMax 方式,该研究采用了先进的无线传输技术,但由于WiMax 使用范围的局限性,该系统的应用范围较小。 一些研究还选用HTTP 作为监控视频的传输方式[6],但浏览器简单的功能制约了视频监控系统的功能复杂化。

1.2 总体设计

本研究设计了一种基于云存储的Android 手机视频监控和流量共享系统,系统结构图如图1 所示。 整个系统包括智能手机视频采集与流量共享客户端、视频转发服务器、云存储服务器、 监控调度客户端和流量共享服务器等5 个部分。智能手机视频采集与流量共享客户端将采集到的监控视频数据发送给视频转发服务器,同时将流量使用情况发送给流量共享服务器。 流量共享服务器负责处理手机客户端的流量分享/索取请求。 视频转发服务器接受到视频数据之后,转发给云存储服务器,使得视频监控数据在云存储服务器上永久保存下来。 监控调度端既可以查看实时的监控视频,也可以查看历史的监控视频。 当监控调度客户端查看实时监控视频时,它向视频转发服务器发送请求。 视频转发服务器收到该请求后, 会将实时的视频监控数据转发给监控调度客户端。当监控调度客户端查看历史监控视频时,它向云存储服务器发送请求,云存储服务器会将相应的历史监控视频数据发送给监控调度客户端。

图1 系统总体结构图Fig. 1 The architecture of the system

2 智能手机视频采集与流量共享客户端设计

2.1 视频采集模块

智能手机视频采集与流量共享客户端通过调用Android系统的接口,实现手机摄像头视频数据及手机MIC 音频数据的采集,并对采集的数据进行H.264 编码,之后通过RTP 协议完成数据包的传输。

在本研究的具体设计及实现中,智能手机视频采集与流量共享客户端是利用 android.hardware.Camera.Preview Callback 类中的onPreviewFrame 方法采集手机摄像头的视频数据以及MIC 的音频数据,利用setPreviewCallback 方法在手机上显示摄像头采集到的视频数据。 采集到音视频数据之后, 该客户端使用streamIt 方法, 采用多线程的方式, 通过socket 将音视频数据每隔一段时间发送给视频转发服务器。

2.2 流量分享及索取模块

音视频传输过程中会消耗大量的流量,因此,本研究在系统中增加了流量共享模块,手机客户端与流量共享服务器端交流,在流量不足时索取流量,在流量过剩时分享流量。 在手机客户端增加了打开WiFi 并连接功能、建立WiFi 热点功能、与流量共享服务器端交互的功能。 本模块包括认证部分、流量分享部分以及流量索取部分。

主流程如下:

图2 流量分享及索取流程Fig. 2 The procedures of traffic share and traffic requirement

由于任何一台连接Internet 的主机、 服务器或笔记本电脑都可以作为流量共享服务器,因此流量共享服务器端的IP地址和端口号并不是固定的。 所以,手机客户端在登录之前,需要首先输入流量共享服务器端的IP 地址和端口号。

连接流量共享服务器成功后, 将用户输入的用户名、密码和位置信息发送给流量共享服务器端。 流量共享服务器收到用户名之后,首先判断该用户名是否存在。 如果用户名不存在,则返回给手机客户端相关信息,手机客户端提示用户需要先注册再登录。 然后,流量共享服务器再对比数据库中存储的用户名对应的密码与手机客户端发送的密码是否一致。 如果不一致,则返回给手机客户端相关信息,手机客户端提醒用户密码不正确。 否则,按照用户的选择,跳转到分享流量界面或索取流量界面。

2.2.1 分享流量部分设计

分享流量界面主要通过反射调用机制来设置Wifi 热点。该界面首先检查Wifi 是否打开。 如果Wifi 已经打开, 则将Wifi 关闭,否则无法使用反射调用机制建立Wifi 热点。 然后调用Android 中的wifiManager 类中的setWifiApEnabled 方法建立Wifi 热点。

主要功能和流程如下:

1)输入SSID 和密码。 创建Wifi 热点时,需要设置该Wifi热点的SSID 和密码,当别人连接该SSID 时,需要输入密码才可以连接。

2)根据用户输入的SSID 名称和密码创建热点,并将SSID和密码发送给流量共享服务器端。

3)当用户想了解连接该SSID 的客户的信息时,该模块可以显示连接该SSID 所有客户的相关信息, 如客户的IP 地址、MAC 地址等信息。

4)当用户想关闭该SSID 时,该模块可以将之前建立的Wifi 热点关闭。

2.2.2 索取流量部分设计

索取流量部分主要功能和流程如下:

1)判断是否打开Wifi。 如果没有打开,则首先打开Wifi。扫描手机客户端附近的热点,获取附近Wifi 热点SSID 的列表。

2) 从流量共享服务器端获取与该手机客户端处于同一位置且在系统中共享的Wifi 热点的SSID 和密码, 并将其与附近Wifi 热点SSID 列表中的Wifi 热点的SSID 进行对比。如果附近Wifi 热点SSID 列表中存在与流量共享服务器返回的Wifi 热点SSID 相同的Wifi 热点SSID, 则根据流量共享服务器提供的Wifi 热点的密码连接该Wifi 热点。 如果连接不成功, 则采用同样的方法连接流量共享服务器提供的下一个Wifi 热点,直至连接成功。

3)如果在流量共享服务器返回的所有Wifi 热点中,没有任何一个Wifi 热点可以连接成功,则提示用户手机客户端附近的所有Wifi 热点名称,让用户自行判断是否连接其中之一的Wifi 热点。

3 流量共享服务器设计

流量共享服务器端负责处理手机客户端的流量分享/索取请求。

流量共享服务器的主要功能和流程如下:

1)确定端口号之后,启动监听Socket。 具体的,使用Java的ServerSocket 建立Socket,并开启监听进程。

2)监听Socket 启动成功之后,连接本地的MySQL 数据库。 具体的,使用Java 中的DriverManager 类的getConnection方法,与本地的MySQL 类建立连接。

3)当需要显示数据库中所有用户的数据时,服务器端连接MySQL 数据库, 返回所有用户的信息, 并将该信息通过JFrame 框架显示出来。

4)当需要重置数据库中所有用户的数据时,服务器端连接MySQL 数据库,并更新所有用户的信息,使其恢复到初始状态。

4 视频转发服务器、监控调度客户端和云存储服务器设计

4.1 视频转发服务器

视频转发服务器端采用多线程机制,并利用socket 机制接受多个手机客户端发送的音视频数据,将数据转发给监控调度客户端和云存储服务器端。 另外,视频转发服务器端搭建了MySQL 数据库, 负责管理使用智能手机视频采集与流量共享客户端的用户, 云存储服务器中的监控音视频资源,以及使用监控调度客户端用户。

视频转发服务器为本系统的中心,分为管理模块和消息处理模块,其流程图如图3 所示。

图3 视频转发服务器功能流程Fig. 3 The function of the video transfer server

4.2 云存储服务器

云存储服务器由单个的PC 机组成PC 机群对外提供海量视频存储的功能。 本研究根据云存储的性能要求, 采用ownCloud 开源软件搭建云存储服务器子节点,再利用视频转发服务器统一管理各个子节点,形成云存储系统。

ownCloud 是一个自由且开源的个人云存储解决方案,包括两个部分:服务器和客户端。 ownCloud 在客户端可通过网页界面,或者安装专用的客户端软件以及挂载为一个外置的磁盘驱动器的形式来使用。 这3 种方式都支持相当多平台,Windows、Linux、iOS、Android 皆有。

本研究按照ownCloud 的要求, 首先在云存储服务器(Linux 系统)端搭建html 环境,Apache 环境,MySQL 环境等,然后配置与ownCloud 与MySQL 数据库,ownCloud 能够使用MySQL 管理其数据。

ownCloud 服务器子节点环境搭建后, 视频转发服务器(Windows 7 系统) 把ownCloud 所占用的云存储服务器的磁盘空间挂载为一个外置的磁盘驱动器。 视频转发服务器的管理模块负责将单一的云存储服务器子节点组合成一个系统,对外提供云存储服务。

得 益 于 ownCloud 在 Android,Linux,MAC OS,iOS,Windows 7/8/8.1 的客户端, 选用ownCloud 搭建云存储服务器使得本研究所获得的视频监控数据在任何平台上都可以访问。 另外,使用ownCloud 建立自己的私有云存储,而非使用Google Cloud, Microsoft Azure, Amazon Web Services, 阿里云,百度云等第三方云存储平台,可以更好地保证监控数据的安全性。

4.3 监控调度客户端

监控调度客户端使用Java 多媒体框架(JMF),并利用CS架构实现监控数据的播放。监控调度端通过TCP 协议与视频转发服务器建立连接,再通过RTP 协议接收视频转发服务器发送过来的音视频数据。 监控调度客户端使用Java 中的decodeYUV420SP 方法对视频转发服务器发送的音视频数据解码,即播放音视频。

5 系统效果图展示

打开监控调度客户端,登陆后,可以同时播放四路视频,在左侧的用户列表栏选择想要查看的实时视频或者历史视频,右侧的播放窗口就会出现相应的视频数据。 实验演示如图4 所示。

图4 监控调度端监控画面Fig. 4 A snapshot of the monitor client

6 结 论

本研究设计了一种基于云存储的Android 手机视频监控和流量共享系统。 该系统主要包括5 个部分:智能手机视频采集与流量共享客户端、视频转发服务器、云存储服务器、监控调度客户端和流量共享服务器。 真实环境中的部署论证了该系统的可行性,对移动视频监控系统的发展具有重要意义。

[1] 陈瑾, 叶桦.基于Hi3512的3G视频监控终端的设计与实现[J].东南大学学报,2011(41):117-119.

[2] Chen W,Shih C C,Hwang L J.The development and applications of the remote real-time video surveillance system[J].Tamkang Journal of Science and Engineering,2010,13(2):215-225.

[3] 魏武,陈宗郁. 嵌入式远程视频监控系统的设计与实现[J].电子设计工程,2010,18(3):62-64.

[4] 赵华军,方钰. 无线移动视频监控原型研究[J]. 计算机工程,2011,37(6):266-271.

[5] 苑春苗,金志刚,杨淸永. 基于WiMAX的移动视频监控系统[J]. 计算机工程,2010,36(6):221-223.

[6] Won-ho Chung. A smart phone watch for mobile surveillance service[J]. Personal & Ubiquitous Computing,2012,16(6):687.

猜你喜欢

服务器端热点客户端
热点
Linux环境下基于Socket的数据传输软件设计
如何看待传统媒体新闻客户端的“断舍离”?
热点
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
结合热点做演讲
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计