杨丰瑞,蒋培健,张杰,
(1.重庆重邮信科(集团)股份有限公司,重庆 400065;2.重庆邮电大学 通信新技术应用研究所,重庆 400065;3.重庆邮电大学 重庆信科设计有限公司,重庆 400065)
随着技术的进步和应用的需求,视频监控已经服务于各个行业。视频监控经历了模拟视频监控到数字视频监控,再到远程网络视频监控几个阶段,它正朝着数字化、网络化、智能化、多媒体化的方向发展[1]。本系统由服务端和客户端两部分组成,服务端采用达芬奇系列DM6467,它采用ARM+DSP双核结构,采用嵌入式Linux操作系统,能够同时支持8路D1和1路高清视频,主要完成视频压缩编码,网络传输,及相关控制等功能;客户端基于Windows系统,VC++开发,完成对视频码流的接收、管理、存储、解码和播放等功能。无线模块采用TD-SCDMA制式的TDM330无线网卡。
目前,视频监控系统的主流技术标准有2个:H.323和SIP。H.323的视频系统目前已经比较成熟,但由于其体系结构庞大且较为复杂,限制了其在中小企业的部署。SIP以其简洁、灵活、易于实现和扩展等特性而迅速得到业界的推崇。不同架构的监控系统在数据互联和共享的时候会遇到控制信令不统一的问题,不同信令实现的监控端、客户端与系统无法互联,有效的手段就是采用统一规范的信令控制协议。SIP协议就是这样一种信令控制协议,只要监控系统的各个单元都用它做信令控制,整个系统就能实现统一的信令交互[2]。在视频监控行业,将SIP作为其系统的控制信令已经慢慢成为共识。本系统就是用SIP与会话描述协议(SDP)、实时传输协议(RTP)配合,将视频监控服务器与客户端监控中心两个部分互联起来构成了一个完整的通信系统,能够穿越局域网在广域网范围内运行。
SIP也称为RFC3261,是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。SIP模仿HTTP1.1的风格,重用HTTP编码,所有消息基于文本,重用Internet寻址方案,使用RFC2369中定义的URI和URL格式[3]。SIP的另一个重要特点是会话双方的会话类型可以使用会话描述协议(SDP)来实现,只定义如何管理这些会话而不定义通信双方的会话类型。可以将繁琐的多媒体类型问题从信令控制问题中剥离出来,从而大大简化了系统的开发难度[4]。
SIP协议定义了6种基本信令:INVITE,ACK,BYE,OPTIONS,CANCEL,REGISTER。SIP 协议根据应用的需要还定义了多种扩展方法,视频监控联网系统主要采用RFC3428定义的MESSAGE方法和RFC2976定义的INF0方法。同时,在RFC3261中还定义了6类响应状态码,从lxx到6xx。其含义表示临时响应、成功响应、重定向、客户端错误、服务器错误、全局错误[5]。
SIP采用客户机/服务器结构,由用户代理(User A-gent,UA)和网络服务器(Server)两大部分组成。用户代理包括用户代理客户端(UAC)和用户代理服务器(UAS)。SIP服务器包括代理服务器、重定向服务器和注册服务器。不同SIP服务器只是逻辑功能上的分类,而不是物理上的[6]。
本系统就是以视频监控服务器作为UAS,客户端监控中心作为UAC,而中间的SIP服务器完成接受用户代理的注册和信令的路由转发。
本系统SIP模块是基于开源库eXosip2/osip2上开发的,笔者使用的是osip2的扩展开发库eXosip2。开发板DM6467 操作系统为:montavista linux2.6.10。
首先需要编译安装SIP协议栈,在目标板交叉编译协议栈,并对协议栈做测试。
其次需要实现SIP服务器,满足简单的测试需要,本系统采用开源的SIP服务器Kamailio(原名OpenSER),3.0版本是一个主要的发布版本,包含很多新功能和特性。安装需要:Linux OS(this tutorial is applied on Ubuntu 10.04),Kamailio 3.0.x ,Asterisk 1.6.2.x,UnixODBC-,MySQL Server and Client(recommended 5.1+,min5.0),MySQL client library,ODBC MySQL connector。安装后并做相关配置,创建合法用户等,从而实现了SIP server。
系统由嵌入式系统服务器和Windows平台客户端组成。其中嵌入式系统服务器模块充当UAS角色,Windows客户端充当UAC角色。首先需要实现服务端(UAS)和客户端(UAC)的注册。UAS/UAC发送注册消息,SIP server回复200OK,则注册成功。注册可以实现UA IP地址的隐藏,客户端在无需知道服务端IP的情况下可以采用:SIP URL(sip:服务端的用户名@SIP server IP)形式,利用SIP server地址服务来实现INVITE请求。由于系统采用TD无线模块,每次开发板启动后,便会自动拨号,拨号成功便返回一个IP,所以每次重启后都得到一个随机IP,通过前面提到的SIP服务器的定位功能便可以解决IP变动问题。
注册成功后,客户端(UAC)便可向服务端(UAS)发送INVITE请求,建立会话。而UAS收到INVITE,认为其合法便向UAC发送RTP媒体数据流。呼叫会话建立过程如图1所示。
图1 SIP会话建立过程
客户端UAC作为会话的发起者,在注册后,首先向SIP服务器发送INVITE请求,SIP服务器会转发INVITE,同时发送TRYING给UAC;UAS收到INVITE后发送TRYING,并发送 RINGING给SIP服务器,SIP服务器转发RINGING给UAC;UAS确认请求便发送200OK,SIP服务器转发200OK,同时UAC直接回应ACK,因为至此UAC已经获知UAS的IP地址信息。在会话建立过程中,UAC发送的INVITE消息会携带SDP消息,INVITE过程就完成了媒体协商。在UAS确定接受INVITE发送200OK,UAC回复ACK后,就可以建立媒体数据流。体现在服务端便是在发送200OK后,就根据INVITE过程中传递的SDP信息建立RTP媒体任务。在会话过程中,任何一方都可以发送BYE来结束会话。
通过SIP的INVITE方法能很好地完成实时视频流监控,控制流方面(包括报警、配置、PTZ控制等)可以采用SIP的其他方法来实现。本系统采用MESSAGE方法来实现PTZ控制,INFO方法实现视频属性的配置。
MESSAGE和INFO是SIP的扩展方法,将其作为视频监控系统的控制流信令方法也被逐渐统一。MESSAGE和INFO的区别是:MESSAGE是会话之外的消息,传递及时消息;INFO的信令通路是呼叫建立之后建立的信令通路,可以是呼叫方和被呼叫方用户代理之间的直接信令,也可以包括牵涉到呼叫建立和自己增加到初始INVITE信息记录路由头部的SIP代理服务器的信令通路。根据各自特点,使用MESSAGE用于云镜控制,信令流程如图2所示[7];而视频参数(制式、亮度、色度、对比度、饱和度)的改变需要在会话建立以后,在通话过程中,根据需要改变,所以适合用INFO方法实现(信令流程和MESSAGE类似)。
图2 MESSAGE信令流程
UAS和UAC的SIP模块具体处理流程大致相同,但是侧重于处理不同SIP消息。下面以视频服务端为例介绍SIP模块的执行流程。
UAS在启动后会进行SIP初始化,指定监听端口与协议类型,然后进行注册(可以实现自动刷新),初始化完成后SIP处于事件检测状态,循环监听端口的网络事件,根据UAC的事件类型做出相应处理。SIP协议栈定义了不同的事件类型,如:EX0SIP_CALL_INVITE,EXOSIP_CALL_ACK,EX0SIP_CALL_CL0SED,EXOSIP_MESSAGE_NEW,EXOSIP_CALL_MESSAGE_NEW等,当判断为 EX0SIP_CALL_INVITE表示UAC发送INVITE,请求建立会话,UAS就发送180振铃,回复200OK同时携带SDP消息,启动建立RTP建立过程;等UAC回应EXOSIP_CALL_ACK,即可启动RTP发送线程;UAS收到EX0SIP_CALL_CL0SED表示UAC请求结束会话,UAS结束本次会话,退出RTP发送线程。而EXOSIP_MESSAGE_NEW是UAS收到UAC的对于云镜的控制信息,调用yuntai()函数执行对云镜的控制,回复200OK;EXOSIP_CALL_MESSAGE_NEW则对应于INFO方法,根据UAC传递过来的参数实时改变视频属性。程序流程如图3所示。
PC客户端监控中心在Windows平台下采用VC++开发,提供了良好的用户界面,操作简单直观。运行后首先完成SIP的注册,注册成功就可以呼叫监控点(视频监控服务器),请求视频连接。也可以点击对应图标通过SIP信令通道实现对云镜的控制和实时视频属性的改变。在本地可以实现视频数据的解码播放、存储、回放、呼叫结束等功能。客户端界面如图4所示。
图3 SIP模块执行过程
图4 客户端界面
笔者介绍了基于SIP的无线视频服务器的设计和实现过程,以SIP作为信令控制协议使系统能够更好地与其他平台互联,实现数据共享。实现了对远程监控点的访问控制和视频流的播放,还可以在此基础上更加完善功能,使视频服务器更加智能。由于采用3G无线传输技术,本系统可以用于一些特殊场合和移动环境,更具竞争力。
[1]凌庆华,石志强,程伟明.基于SIP的网络视频监控系统的设计与实现[J].计算机工程,2007,33(2):261-263.
[2]刘勇,陈延雄.SIP协议的研究及呼叫控制实现[J].微处理机,2008,3:54-56.
[3]ROSENBERG J,SCHULZRINNE H.RFC3261 IETF,SIP:Session Initiation Protocol[S].2002.
[4]赵哲峰,张刚,谢克明,等.基于SIP的视频监控服务器设计[J].太原理工大学学报,2009,40(4):337-340.
[5]何青林,陈朝武,卢煜,等.基于SI P的视频监控联网系统的设计与实现[J].电视技术,2009,33(5):116-117.
[6]万晓榆,张溢华,樊自甫.基于SIP的视频会议系统视频模块的设计与实现[J].电视技术,2009,33(8):99-102.
[7]ROSENBERG J,SCHULZRINNE H,HUITEMA C,et al.RFC3428 IETF,Session Initiation Protocol(SIP)Extension for Instant Messaging[S].2002.