网络信息化的趋势,跟着流媒体技术、无线网络技术以及视频压缩技术的不断进步,视频监控技术得到了广泛的运用,一起,监控的规划和规划也在不断的扩展。大家关于安全保证的需求不断的提高,然后使得过去以图文为主的内容服务应经不能够满意用户的需要,取而代之的则是音视频多媒体服务。运用移动终端技术的视频监控体系,不只具有体积小型化、装置傻瓜化以及装备灵活化的优势,最重要的是还降低了成本。因为网络功用和视频压缩都被会集的保存在小体积的设备中,因此,经过网络长途监控视频设备就能够取得监控视频。当前,网络视频监控不只面向企业级客户,逐渐的,也经过视频监控为大众供给服务。如旅游景点人流、景点检查、交通导航等。依据敞开渠道的移动视频监控已经成为监控研究领域的热门
视频监控体系需要的传输数据分为两类:操控信息和视频数据。尽管两类数据进行传输的时分都是依据IP协议进行的,可是,他们分别采取了运用层协议和传输层协议,这是因为两者的特性需求和完结软件的规划不一样导致的[3]:榜首,选用TCP传输层协议进行信息操控。之所以选用TCP/IP的传输形式进行信息操控,这是因为操控信息尽管不需求较高的实时性,可是关于传输的可靠性需求却非常高。因此,选用了有严厉握手进程和重传机制的TCP传输层协议。第二,传输视频数据时,选用RTP运用层协议和UDP传输层协议。因为网络视频的时效性需求远远高于可靠性,因此,本文选用了RTP运用层的传输协议支撑实时传输服务。在传输层,尽管UDP尽量选用交给办法进行出数据传输,可是却没有拥塞操控,然后关于大数据量的实时视频数据对比合适此办法,因此,本论文选用UDP协议作为传输层协议。接纳到上层运用程序的多媒体信息码流后,经过RTP装配成数据包发送给下层,然后在经过UDP/IP协议封装后构成RTP流。传输操控子体系是依据RTP协议构建的,经过传输层通讯运用的UDPSocket完结。
在PC机上完结了对视频监控体系运用程序的开发,首要选用图画接纳办法来完结移动渠道的智能视频监控体系。
服务器端的功用首要是初始化摄像头和网络端口号以及主机地址,敞开视频监控服务,实时捕捉监控现场图画然后等待客户端的衔接恳求[4]。与长途恳求的手机客户端成功树立衔接后,便开端向客户端发送视频图画信息。服务器端的规划流程图如图2所示。担任现场监控的Pc服务器端,需要对监控设备进行初始化操控,选用Visual Studio编程环境下的c++/MFC语言来完结。在进行网络通讯传输时,体系是依据RTP协议构建的,经过传输层通讯运用的UDPSocket来完结服务器端和客户端之间的通讯,以完结图画安稳传输。Socket通讯的有些经过MFC语言中的CSocket类来完结,而摄像头图画收集和操控则运用相应服务厂商供给的SDK进行完结。视频的捕获中,规划了CCaptureVideo类,并将其完结,经过对翻开视频响应函数中该类的调用来完结对视频的捕捉。在处理捕获的视频图画时,将捕获的视频图画转换成接连的JPEG格局的图画存储在数据缓冲区中,该线程不停地承受客户端的衔接恳求,将图画发送给客户端。
该视频监控体系的客户端首要经过TCP/IP协议和服务器端进行施行通讯的,一起运用Socket完结全部进程。作为通讯链句柄的Socket网络通讯套接字用于描绘端口和IP地址。经过Socket编程,运用程序会向网络发出恳求或应对网络恳求。Socket作为通讯的柱石,支撑TCP/IP协议的网络通讯的根本操作单元。本程序中运用的Socket传输形式,是面向衔接的Socket操作运用TCP协议。Socket在该形式下,有必要在客户端和服务端树立Socket衔接,一旦树立好衔接,便能够在一个流接口进行翻开、读、写以及封闭等操作,而另一端则以一样的次序承受所有的信息。相比无衔接而言,尽管面向衔接的操作功率较低,但数据却具有更高的安全性。依据Android视频服务器体系终端,有必要经过选用Socket网络通讯技术承受来自监控前端的视频数据。Socket通讯使得监控前端和终端,经过网络衔接完结数据的交互。Socket衔接初始化后才能进行Socket通讯,其完结进程与面向衔接的Socket通讯一样。创立Socket服务线程,当发生监听后,服务主进程担任不断循环的监听接纳到的恳求,一起树立新的客户衔接Socket,创立针对此Socket的通讯进程。在视频监控体系中创立Socket的进程,首先用ServerSocket serverSocket=null在服务器端创立一个Socket,然后用serverSocket=new ServerSocket(8888)监听端口8888。假如在该端口接纳到客户端Socket的恳求,则用Socketclient=serverSocket.accept()来创立一个Socket目标。树立衔接后,调用InputStreamReader来接纳服务器端发送的视频数据,然后经过BufferedReader将此数据读取出来。服务器从前端收集体系接纳的数据经过BufferedWriter写入,并经过OutputStreamWriter发送给网络客户端。通讯结束以后,经过os.close()、is.close()和socket.close()来封闭输出输入流并封闭Socket端口,服务器中止Socket通讯。网络客户端终端作为接纳数据的客户端,首先用Socketsocket=null在终端创立一个Socket,然后设置Socket通讯的服务器的IP地址和通讯端口socket=new Socket("192.168.1.101",8888),成功与服务器树立衔接后,用InputStreamReader创立输入流,以后经过BufferedReader读取出来,进行解析并显现在用户端界面上,数据接纳结束后,经过BufferedWriter写入接纳结束信息并经过OutputStreamWriter发送至服务器,通讯结束后,经过os.close()、is.close()、socket.close()封闭输入输出流,并封闭Socket端口,至此全部Socket通讯完结。
因为服务器发送的是解码后的图画数据,因此客户端接纳到的数据流能够构成一幅图画[5-6]。经过Android供给的BitmapFactory.decodeByteAllrayO函数,能够从接纳到的数据流中得到Bitmap格局的目标。后文的处理皆针对此Bitmap目标进行。
为了完结监控画面的显现,需承继View类,重写了onDraw()办法。其中,在onDraw()办法中所完结的内容,将在客户端界面上显现出来。界说一个Bitmap目标,此目标将在画布中制作出来。当担任接纳图画的线程接纳到新的图画数据时,将数据传给该目标,并在线程中调用postlnvalidate0办法,重绘画面。为了体系完结非常好的显现作用,本规划选用了双缓存机制。显现的画面存储在原先目标中,而接纳的画面存储在变量另一目标中。假如网络情况不好,并不能及时接纳到新的数据,使得另一目标为空,则原先的变量不更新,还将显现之前的画面,这样处理将在必定程度上提高用户体会,削减网络情况不好情况下的突发性黑屏。
依据Android的GUI体系,能够完结长途视频实时监督的用户界面,并供给播放器和用户之间的交互接口。Java和C语言结构一起构成了GUI体系,此体系对下层经过调用显现输入、输出设备的驱动,将Android的软件体系和底层的硬件联系起来;此体系关于上层供给了Java层次的绘图接口,Android的Java结构层调用这些接口来构建各种UI元素。此外,Java也能够调用绘图接口。