面向平安城市的视频监控前端呼叫设计研究

2017-01-20 10:02王永建徐杨王迅周显
软件 2016年4期

王永建 徐杨 王迅 周显

摘要:在平安城市的建设中,管理平台对视频监控前端呼叫越来越重要。为了完善对视频监控前端的呼叫效果,设计了一种视频监控前端呼叫方案。首先简析了SIP、RTP/RTCP协议原理;设计了视频监控系统整体结构,定义了各主要组成部件的功能。然后分析了视频监控前端呼叫设计思路,设计了RTP Over UDP、RTP Over TCP的呼叫方案,以及NAT穿越方案。本文的设计思路在一些平安城市建设中已开始应用,应用效果良好,具有一定借鉴意义。

关键词:SIP;RTP/RTCP;监控前端;NAT穿越

中图分类号:TN919.81 文献标识码:A DOI:10.3969/j.issn.1003-6970.2016.04.024

0 引言

随着移动互联网、云计算、智能终端、Web等技术的发展,以及2012年国家智慧城市试点建设工作的启动,视频监控系统在构建和谐社会中发挥的作用越来越重要。

2012年6月1日,公安部发布了《安全防范视频监控联网系统信息传输、交换、控制技术要求》(B/T28181-2011)相关文件,正式启动了国家平安城市的建设工作。

平安城市视频监控系统中的监控前端(像机、传感器、报警器等)再是传统的只会数据采集功能,而是能根据管理平台/客户端的指令或者请求,进行相应操作或者提供相关服务。如响应平台云镜控制、呼叫/警告监控现场可疑人员、提醒人群避开危险场所/歹徒、提供实时图像服务等,管理平台/客户端对监控前端的呼叫控制功能要求越来越丰富和严格。目前从管理平台/客户端→监控前端的呼叫实现还需要完善,本文设计了一种实现方案,并进行了探究。

1 相关协议分析

1.1 SIP协议

SIP(Session Initiation Protocol,会话初始协议)是基于HTTP(HyperText Transfer Protocol,超文本传输协议)和SMTP(Simple Mail Transfer Protocol,简单邮件传送协议)的信令协议,属于一个应用层的控制协议,基于请求/响应的事务处理模型,使用消息方式完成用户会话的建立和管理。见图1所示:

SIP具有易扩展,易实现等特点,非常适合用来实现基于互联网的多媒体通信系统。SIP支持名字映射和重定向服务,将原来请求的地址映射为新地址,只进行重定向,并不参与事务的处理。SIP非常适用于作为客户唯一的外部标志,而无需关系所在的实际网络位置。

SIP消息分为两类:SIP请求和SIP响应;其中请求消息由客户机发往服务器,响应消息由服务器发往客户机。请求消息和响应消息格式由一个起始行、若干个头字段,以及一个可选的消息体组成。请求和响应消息的基本格式如下:

SIP消息一起始行

*消息头部(个或多个头部)

CRLF(行)

[息体]

起始行一请求行,状态行

请求消息的起始行为请求行:

Request-Line=Method SP Request-URI SP SIP-ersion CRLF。

响应消息的起始行为状态行:

Status-Line=SIP-Version SP Status-Code SP Re-ason-Phrase CRLF。

1.2 RTP/RTCP协议

SIP协议单独不能完成多媒体呼叫,必须与RTP/RTCP等协议一起配合共同完成多媒体会话过程。

RTP(Realtime Transport Protocol,实时传输协议)一种针对多媒体数据流的,运行在UDP(User DatagramProtocol)协议之上的传输层协议。RTP协议只负责对媒体数据流的封装和实时传输,但不能为数据提供可靠的传输机制,也不提供流量控制或拥塞控制。由RTCP(Realfime Transport Control Protocol)协议根据传送网络质量,实现流量控制与拥塞控制。RTCP仅在基于UDP传送媒体流时使用,基于TCP(Transport Control Protocol)传送媒体不使用。在UDP中,RTCP与RTP协议配对使用,通常RTP使用偶数号端口号,则相应的RTCP使用紧随其后的奇数号端口。见图l所示。

2 系统结构设计

本文将视频监控系统分为中央管理系统CMS(Central Management System),接入网关AG(AccessGateway),媒体分发系统MDS(Media DistributionSystem),监控前端MF(Monitoring Fore-terminal),客户端MC(Multimedia Client),以及其它模块。见图2所示。

(1)中央管理系统

CMS是视频监控系统的中枢管理系统,直接管理AG与其它模块。作为管理中心提供客户端/用户管理;作为存储中心存储客户端/用户数据和业务参数配置数据,向Portal提供发布的内容。提供客户端接人时的呼叫控制功能,接收SIP的呼叫请求。如果被叫是本域的前端,则修改SIP消息中的SDP(Session Description Protocol),根据前端注册的信令地址发起新的SIP呼叫,失败则释放本次呼叫。

(2)接入网关

AG是系统的前端接入网关,以及Web/Wap客户端的Http Portal,是MF注册或者会话时的第一个访问点,部署在MF与CMS之间。AG必须实现本域MF的接人,接收和转发由MF或CMS发来的SIP信令。实现对MF的接入管理,接收、转发来自MF的呼叫控制信令给CMS,转发从CMS接收到的请求或应答消息给MF。

(3)媒体分发系统

MDS是系统的媒体转发/分发单元,负责平台侧的媒体传送,在CMS的媒体调度模块控制下完成音视频传送功能,可以多级级联和分布式部署。

(4)监控前端

MF包括图像采集设备,如摄像机、智能终端,和其它信息采集设备,如传感器、射频识别仪器等,本文默认为摄像机。监控前端主要负责:数据采集、缓存、处理、上传至管理平台;响应管理平台的指令或者Web/WAP客户端的请求,执行对应操作或者提供相关服务。

(5)客户端

MC分为PC客户端、手机客户端,基于Web/WAP,本文默认为Web。客户端功能可包括呼叫控制、图像浏览、录像回放、云镜控制、快照、解码、对讲等功能。

3 呼叫设计方案

3.1 设计思路

在MF接入到管理平台之后,平台根据需要判断是否呼叫MF。管理平台录像或者浏览接入MF上的视频时,平台主动呼叫MF。

管理平台根据MF上报支持的RTP Over UDP还是RTP Over TCP能力进行选择确定采用何种方式,默认采用RTP Over UDP方式。MF配置成RTPOverTCP方式下,平台能够主动采用RTP Over TCP方式呼叫MF。客户端与管理平台对MF的呼叫原理类似。

3.2 RTP Over UDP

在实时流媒体采用RTP Over UDP方式进行承载时,MF需支持RTCP包的发送和接收。同时MF可能部署在NAT(Network Address Translation)设备之后,在管理平台与MF呼叫建立成功之后,MF需主动发送RTP/RTCP的NAT穿越包来打通平台与MF之间的NAT设备。MF根据NAT穿越包响应判断在MF与MDS之间是否存在NAT设备,如果不存在则后续可不发送NAT穿越包,如果存在N则需要定时发送NAT穿越包。见图3所示:

(1)CMS判断是否需要呼叫MF请求实时视频;

(2)如果需要请求MF实时视频,CMS向MDS申请媒体资源;

(3)媒体资源申请成功之后,CMS主动发起INVITE消息到AG;

(4)AG转发请求MF实时视频INVITE消息到MF;

(5)MF分配资源,发送200 OK响应消息给AG,在消息中携带MF的SDP消息;

(6)AG转发请求实时视频响应消息到CMS;

(7)CMS通知MDS媒体协商成功;

(8)CMS发送ACK消息到AG;

(9)AG转发ACK消息到MF;

(10)MF收到ACK消息后,首先发送RTP和RTCP的NAT穿越包,并开始发送码流到MDS,MDS接收码流后存储或者分发到客户端;

(11)当平台录像结束后,或者客户端都停止观看实时视频后,CMS发送请求释放对应的媒体资源;

(12)CMS发送BYE消息到AG;

(13)AG转发BYE消息到MF;

(14)MF终止发送实时视频流到平台并发送2000K响应消息。

3.3 RTP Over TCP

在实时流媒体采用RTP Over TCP方式进行承载时,MF需支持根据SDP协商的信息主动与MDS建立TCP链路,发送RECORD消息给MDS,并通过建立的TCP链路发送RTP和RTCP给MDS。RECORD消息定义与NAT穿越包定义保持一致,RTPOver TCP打包格式参考REC2326中的10.12 Em-bedded(Interleaved)Binary Data定义方式。见图4所示。

(1)cMS判断是否需要呼叫MF请求实时视频;

(2)如果需要请求MF实时视频,CMS向MDS申请媒体资源;

(3)媒体资源申请成功之后,CMS主动发起INVITE消息到AG;

(4)AG转发请求MF实时视频INVITE消息到MF;

(5)MF分配资源,发送200 OK响应消息给AG,在消息中携带MF的SDP消息;

(6)AG转发请求实时视频响应消息到CMS;

(7)CMS通知MDS媒体协商成功;

(8)CMS发送ACK消息到AG;

(9)AG转发ACK消息到MF;

(10)MF收到ACK消息后,MF根据SDP协商中的TCP连接,向MDS建立TCP链路,并通过建立的连接发送RECORD消息(这个RECORD消息包的格式与RTP Over UDP中发送的NAT穿越包格式保持一致,支持消息承载发送的方式从UDP变成TCP);

(11)MDS根据RECORD包内容判断合法性,并返回响应给MF;

(12)MF通过建立的TCP链路发送RTP/RTCP数据给MDS;

(13)当平台录像结束后,或者客户端停止观看实时视频后,CMS发送请求释放对应的媒体资源;

(14)CMS发送BYE消息到AG;

(15)AG转发BYE消息到MF;

(16)MF终止发送实时视频流到平台并发送2000K响应消息;

(17)MF主动释放建立的TCP链路。

3.4 NAT穿越

实际应用中,由于网络安全、管理、IP地址资源等因素,MF、CMS、MDS等往往位于不同的子网之内,不允许跨子网直接通信。NAT(NetworkAddress Translation)技术是一种边缘网络过渡的常用解决方案,主要用于解决跨IPv4/IPv6子网之间的直接通信问题。不过NAT会破坏源地址与目的地址之间的连续性,因此RTP/RTCP数据包的NAT穿越至关重要。NAT穿越包完全采用文本格式,采用类RTSP(Real Time Streaming Protocol)的PLAY和RECORD方法,其PLAY用于MF发送NAT穿越包,NAT穿越数据包分为请求包与响应包,具体格式定义如下。

(1)MF的NAT穿越请求包

(2)MF的NAT穿越响应包

请求和响应通过Session和CSeq进行配对,请求和响应的Session与CSeq都是相同的。

在请求消息中local addr=0.6.10.102;local port10000是指发送NAT请求包的本地IP地址和端口号。

在响应消息中src addr=202.103.10.12;src port=5673是对端检测到的NAT请求设备的源IP地址和端口号(也就是NAT之后的IP地址和端口号),localaddr=10.6.10.102;local port=10000是本地发送RTP包的IP地址和端口号。

RTCP的NAT穿越包和上面的类似,只是CSeq、type和port内容的值不同。

NAT请求发送方检测到local addr=src_addr并且local port=src port时,可停止发送NAT穿越包,否则定时发送NAT穿越包。

MC直连MF时,NAT包中的URL(UniformResoureLocator)阳Session统一采用MF的SDP中指定的URL和Session ID。

4 结束语

本文基于SIP、RTP/RTCP等协议,设计了平安城市中管理平台/客户端->监控前端的呼叫实现方案,NAT穿越方案。本文的思路在一些项目中已开始运用,效果良好。

随着大数据、智能分析、RFID(Radio FrequencyIdentification)、脸谱识别、虹膜识别等技术的发展,以及Web/Wap、APP客户端的广泛应用,对监控前端的呼叫控制提出了更高的要求,将会有新的实现技术与方案,该领域的研究还有很多工作要做。