基于Android的SIP远程视频监控系统的设计

时间:2022-07-18 01:20:10

基于Android的SIP远程视频监控系统的设计

【摘要】本文利用SIP协议建立组呼来控制监控摄像头,从而建立多路远程视频监控系统。论文介绍了基于Android系统的SIP协议栈JAIN-SIP和远程视频监控系统架构,阐述了利用SIP扩展消息完成组呼控制,从而实现监控中心对远端监控摄像头的呼叫控制。

【关键词】AndroidSIP视频监控组呼

视频监控一直是人们关注的热点之一,在经历了本地模拟视频监控、本地数字视频监控、基于网络的远程数字视频监控的发展历程之后,现有的数字视频监控系统在远程监控、系统部署、管理维护以及历史记录存储管理等方面有着不可比拟的优势,以其直观、方便、信息内容丰富详实等特点被广泛应用于公安、电信、金融、交通、水利等部门[1]。

目前的网络监控系统多采用HTTP协议,视频信息通过HTTP协议以流媒体方式进行传输,所有媒体信息和前端控制信息都采用同一个HTTP通道,不做信息通道的区别。随着监控网络规模的扩大,这种系统架构对于大规模的视频监控运营和集中化管理带来了极大的挑战。将网络视频监控系统中的媒体通道和控制通道进行分离,能够极大的帮助网络监控系统的大规模部署、运营和管理[2]。此外,在控制通道采用统一的控制信令协议对于联网平台是非常关键的。在视频监控中并没有一种专门为其制定的信令控制协议,但可以借鉴类似应用中成熟的现有协议。SIP协议作为应用于IP网络中建立、修改和终止多媒体会话的应用层协议,具备简单灵活、可扩展和分布式控制等优点,不限于VoIP的使用,在视频监控这个多媒体领域也能得到广泛应用。

一、SIP协议及其JAIN-SIP协议栈

SIP(Session Initiation Protocol)是IETF提出的一种协议,基于HTTP,但可以使用UDP或者TCP作为传输协议。它使用SDP描述多媒体会话,同时它是基于文本的。SIP建立、调整和终止多媒体会话[3]。

SIP协议定义了两类实体:用户和网络服务器。用户(UA)是一个用于和用户交互的SIP实体,即终端用户设备。网络服务器包括注册服务器、服务器和重定向服务器。注册服务器是指一个接受用户注册的SIP服务器,并将注册信息保存在本地数据库中;服务器用于转发会话邀请信息给收件方的UA;重定向服务器则通过提供可选择的位置帮助定位UA。

SIP消息[4]包含响应消息和请求消息,这两种消息的格式都包括一个开始行,一个或多个头域,一个空行和一个可选的消息体。响应消息以状态行作为消息的第一行,状态行包括协议版本号,状态码和原因说明,其间用空格隔开。状态码是一个从100到699的3位整数,代表对请求做出响应的状态:1××Informational(通知)、2××Successful(成功)、3××Redirection(重定向)、4××Request Failure(请求失败)、5××Server Failure(服务器失败)以及6××Global Failure(全局错误)。请求消息包含六种,分别为INVITE(邀请)、ACK(确认)、OPTIONS(可选项)、BYE(再见)、CANCEL(取消)及REGISTER(注册)。

SIP协议扩展主要有三种方式:方法扩展、头部扩展、消息体扩展。SIP消息头是对消息进行必要的描述,可以根据需要增加新的头域以支持消息新的特性。

Google在2010年12月了Android 2.3系统,该版本提供了一套SIP协议栈供VOIP开发人员使用。该SIP协议框架是以Android的Binder机制和广播(Broadcast)机制为基础的一套IPC系统,并在内部部分移植了JAIN-SIP协议栈(javax.sip)[5]。我们不需要关心底层实现的细节,只要从应用层面的开发来看,只需获取系统提供的SIP服务,并调用系统提供的方法即可,该框架的几个重要的类位于.sip包中。

二、监控系统设计与实现

2.1系统构成

监控系统由监控端、SIP服务器及监控管理平台三部分构成,如图1所示。

2.2视频监控端模块设计

监控端的硬件平台采用采用ARM Cortex-A8处理器S5PV210,主频1GHz,支持MPEG-4/MPEG2、H.264/H263、VC-1、DivX的视频编解码,支持JPEG硬件编解码,最大支持8192×8192分辨率,内部集成4G bits DDR2、2G bits SLC NAND FLASH。监控端采用Android 2.3.1嵌入式源码。

在Android系统中,要获取视频编码数据,传统的方法是将摄像头捕获的原始未经压缩的数据通过软编码的方式形成发送码流,在Android平台上要实现这种方法需要先配置响应编码器的makefile文件,然后利用Android NDK编译器将编码器提供的源文件编译成Linux下可以使用的动态链接库,再通过设计JNI接口供上层调用,这种方式成为Android平台的库移植。可以预见这种方式的开发效率低,开发周期长,因此本文不采取这种方式,而是利用硬件获取编码数据,通过Android的MediaRecorder方法回调硬件编码芯片产生的编码数据,这种方式的速度快,效率高。其中需要用到Android的MediaRecorder类,该类用于实现音视频录制功能,可以设置视频的编码格式、视频文件的输出格式以及视频文件的输出方式等。本文采用的输出格式为MP4格式,可以直接从MediaRecorder里面已经生成好的视频数据中提取出H.264的数据,这些数据都已经过相应的编码。要获取输出流中的H.264编码数据,首先定义一个LocalSocket作为输出视频数据的缓冲区,初始化并开启MediaRecorder,向LocalSocket写入MP4格式的H.264数据,最后开启读取线程,从缓冲区循环读取H.264编码数据。

2.3系统服务器

2.3.1SIP信令服务器

SIP信令服务器又可分为注册服务器、服务器及位置服务器,相应完成注册、及定位功能。在远程监控系统中,监控管理平台与监控端需要先向系统注册;当监控管理平台需要接入监控端视频时,通过系统向该监控端发送INVITE请求。由于监控管理平台中需要能够同时接入多路的视频,因此系统采用组呼请求的方式来建立连接。

由于在SIP协议的基本协议中并不支持组呼功能,为此,本系统采用SIP消息头扩展方式,在组呼的INVITE请求的消息头中加入了若干扩展参数,形成组呼请求信令。同时,本系统还考虑了对语音呼叫的支持。其INVITE请求消息的格式大致如下:

INVITE sip:GroupNum@SIPServerAddress: Port SIP/2.0 Via:SIP/2.0/UDP SIPServerIp:Port; branch=z9hG4bKxxxxxx;rport

From:“MonitorName”;tag=xxxx

To: sip:GroupNum@SIPServerAddress: Port Call-ID: CSeq: 1 INVITE Max-Fowards:70

组呼的大致流程如图2所示:(1)监控中心向SIP服务器发送INVITE消息,请求建立组呼;(2)SIP服务器向监控中心发送100 TRYING消息,通知其正在等待处理;(3)SIP服务器获取被叫组的用户信息等,按照被叫组的信息判决是否能够执行当前组呼业务,若能则向被叫监控端发送INVITE消息,被叫监控端向SIP服务器发送100 TRYING消息,等待后续处理;(4)监控端向SIP服务器发送200 OK消息,携带监控端的接收端口,响应组呼请求;(5)SIP服务器向被叫监控端发送ACK,确认组呼建立结果;(6)SIP服务器收到第一个被叫监控端的200 OK消息后,向监控中心发送200 OK消息,确认组呼建立应答;(7)监控中心向SIP服务器发送ACK消息,反馈组呼建立确认。

2.4监控管理平台

监控管理平台用于视频监控连接的建立、视频流的接收、解码播放以及远程控制等功能。监控管理平台可以查看和管理多个监控端的视频图像,控制台实时监控图像画面如图3所示。

同时,本系统还可实现无人值守监控功能。利用图像处理算法对比前后两幅图像是否发生变化来判断指定区域是否有异常行为,一旦发生异常,监控中心即发出警报信息。同样,在监控端也可实现远程报警,一旦摄像头探测到异常信号(如人脸识别等),监控端即向监控管理中心发送MESSAGE消息,监控管理中心以此判定有异常状况,启动报警装置。

三、结束语

本文设计并实现了基于嵌入式Android平台的SIP远程视频监控系统。系统使用SIP协议来进行传输的建立与控制,采用嵌入式终端来采集视频,提高了系统的效率与稳定。在嵌入式平台上采用Android系统,便利了对视频的编码与传输。通过对SIP信令扩展参数的设置,实现组呼接入多路视频的功能,同时自主监控的设计使得系统更加智能化与人性化。由此可见,利用SIP协议的易扩展性,通过SIP协议的扩展能满足更加多样化的控制需求。

上一篇:关于中职机电专业的互动式教学 下一篇:西南石油大学无线校园网扩展升级设计