一个基于RTP/RTCP的手机报警系统
2009-04-13
作者:张海军, 吴克捷, 杨印根,
摘 要: 在研究RTP/RTCP协议特点与功能的基础上,讨论了基于RTP/RTCP协议实时视频传输的控制方法。通过此控制方法可以有效地提高RTP流的平稳性,减小抖动,增加网络带宽的利用率,流畅地传输多媒体数据。利用GPS、RTP/RTCP等协议实现了手机报警系统。
关键词: RTP/RTCP; Internet; H.263/H.264; G.729; GPS
随着我国经济的迅速增长和精神生活的不断丰富,人们越来越热衷于参加一些具有挑战性的活动,而遇到危险的几率也大大增加,因此在困境中个人求助显得格外重要。此外,因恶性案件严重地威胁到人身安全,所以要求相关部门加强整治社会治安力度、快捷有效地侦破案件。目前手机的应用越来越普及,作为一项手机功能的拓展,构建一套简单快捷的手机报警系统很有必要,也易于推广。
手机报警系统是利用现有手机加载GPS技术、网络协议RTP/RTCP以及H.263/H.264、G.729视音频编码方式实现的一键快速报警系统。一键快速报警后,手机终端不断地发送其位置信息和周围环境的音频、视频信息,从而实现其快捷、隐蔽的报警,为公安及相关部门施救或破案实时地提供有效的现场信息。
1 GPS及GPS信息采集
GPS(Global Positioning System)全球定位系统[1]是中距离圆形轨道卫星定位系统,可以为地球表面绝大部分地区提供准确的定位和高精度的时间基准。GPS信息包括经度、纬度和采集时间等,即在定时器的控制下,手机不断地采集GPS信息并发送相关数据。获取GPS坐标数据模块的函数接口如下[2]:
(1)InitDevice()函数:用于初始化GPS设备驱动程序的函数接口。
(2)LoadThread()函数:用于创建获取GPS坐标数据的线程函数接口。
(3)GPSThreadProc(_opt LPVOID lpParameter) 函数:用于获取GPS坐标数据的函数接口。
(4)BackUpGPSData(MYGPSDATESEND GpsDate) 函数:用于将获取后的GPS坐标数据以二制形式存储在终端本地的函数接口。
(5)UnloadThread()函数 :用于停止GPS线程运行的函数接口。
(6)StopTime(int StopTime) 函数:用于停止GPS获取的时间设置。
2 RTP/RTCP协议及其传输控制方法
2.1 RTP/RTCP协议[3]
RTP协议是用于音频、视频等多媒体数据实时传输的协议,它包括RTP和RTCP两个子协议。其中,RTP用于实时数据端到端传输,RTP包中提供了时间戳即发送数据块首字节的创建时间和序列号,以达到数据的同步和重组;而RTCP包中含有已发送的数据包的数量、丢失数据包的情况和数据包到达时延抖动等信息,可以监视网络的服务质量、通信带宽以及网上传送的信息。发送端可以利用RTCP提供的信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,可共同提供流量控制和拥塞控制服务,能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合网上实时数据的传送。RTP协议的数据包格式如图 1所示。
常用的RTCP包有五种:发送方报告包(SR)、接收者报告包(RR)、源描述包(SDES)、站点离开系统报告包(BYE)和特殊应用包(APP)。包的主要数据项格式如图2所示。
RTP包通过下层UDP 来实现数据的传输,数据装载模型如图3所示。
2.2 实时传输控制方法
远程网络传输的不可靠性主要表现在[4-5]三方面:(1)数据包“乱序到达”,先发送数据包有可能后到;(2)在Internet环境下,网络传输带宽变动会引起发送的数据包丢失;(3)数据包到达的时延过大而产生抖动会引起数据的失真。
而RTP/RTCP能很好地解决上述问题。首先,在接收端缓冲区中用RTP包中的序列号来调整到达数据包的顺序,使之与发送时的数据顺序一致;其次,为了改进远程视频传输系统的稳定性,建立一个传输控制模型,这样就可通过网络状况的反馈及时调整采样频率以及编码格式以适应当前的网络传输要求。RTCP利用主要的两种控制包SR和RR反馈的信息如数据包丢失比、数据包丢失率、吞吐量和吞吐率、数据包到达时延抖动J(interarrival jitter)和往返传播时延等来调节实时传输,并调整系统的打包格式、发包速率来保证流畅地传输数据和清晰地播放视频。其数据传输控制模型如图4所示。
3 手机报警系统的组成
手机报警系统的结构框图如图5所示,由三大部分构成:(1)信息采集部分,包括智能报警终端(手机)、移动无线传输网络和接入服务器;(2)中央处理部分(服务器端),它是系统的核心,包括各个服务器单元、报警系统的接口等;(3)终端即110指挥中心处接入坐席(监控端)。各部分功能如下。
报警终端:
(1) 使用WinCE键盘钩子模拟一键报警(长按绿键)。
(2) 按键报警后,键盘不做任何响应直至服务器发出结束指令。
(3) 按键报警后,手机获取EEII号、启动GPRS进行设备认证。
(4) 认证通过,开始传递报警数据直至服务器发出结束指令。
(5) 定时传递GPS坐标信息。
(6) 手机本地保留报警数据直至无存储空间为止。
服务器:
① 服务器接到报警请求后,根据EEII号进行身份验证;
② 将报警索引信息写入数据库,实时数据写入文件;
③ 通知监控端更新监控对象列表;
④ 根据需要,实时转发报警数据到监控端;
⑤ 支持多个手机终端,维护在线报警手机列表;
⑥ 支持多个监控端,维护在线监控端列表。
监控端:
(1) 可以定时刷新报警列表。
(2) 选择报警对象进行跟踪。
(3) 动态显示报警信息。
(4) 发出“结束报警”指令。
4 手机报警系统的设计
手机报警系统的流程是:首先手机端发送注册信号给服务器端进行连接,注册成功后开始音频采集、视频采集和GPS采集,同时进行音视频的压缩编码, RTP分包封装,并且形成RTCP发送端报告,发送给服务器端。服务器根据报警信息进行相关的处理:存储数据、与监控端进行连接和发送报警信息。报警系统的逻辑框图如图6所示。
5 手机报警系统的实现
系统的实现是在Visual C++6.0环境下[6-8],采用H.263/H.264视频编码[9-10]和G726音频压缩编码[11]。传输控制子系统是基于RTP/RTCP协议构建,通过传输层的UDP Socket完成实时传输。手机端负责按键报警,它包括如下几个模块:启动GPRS网络模块、采集音频数据模块、获取GPS坐标数据模块、数据打包发送模块。服务器端主要分为如下模块:网络管理模块、协议分发模块、代理模块、管理模块、登录管理模块、终端管理模块、监控端管理模块、文件管理模块、数据库管理模块、日志管理模块及UI等模块。
监控端再现报警人的音视频和GPS信息,其详细实现如下:
(1) 监控端注册,即监控端软件启动后,启动网络监听,然后自动向服务器进行注册(注册内容包括IP地址和端口号)。如果超过15s服务器没有响应,软件给出错误警告,然后退出系统。
(2) 心跳信号,即监控端软件每15s发送心跳信号数据包给服务器,服务器据此来维护监控端列表。
(3) 刷新报警列表,即软件维持一个当前报警对象的列表。报警列表的更新方式有两种:
①软件启动并注册后,服务器即返回当前报警列表。
②当服务器端报警列表更新的时候,向监控端发送变更消息。
(4) 选择报警对象进行跟踪,即发送“跟踪”指令给服务器,如果成功回应,接收音视频数据,开始播放音视频数据;如果25s没有应答,则退出请求跟踪。处理过程如图7所示。
RTP协议中用于监控端与服务器软件的接口函数如下:
(1)RTPProtocolInit()函数:用于初始化RTP,判断连接服务器是否成功的函数接口。
(2)onCrlDataArrive(const RTPAddress frm,const CrlType crltype, unsigned char *data, const int length, const char *id)函数:用于实时接收服务器返回的信息数据函数接口。
(3)SendData(CrlType crltype,unsigned char * Data,int Length) 函数:利用RTP协议定时发送心跳信息及向服务器注册的信息函数接口。
RTP/RTCP协议选取数据包丢失比、数据包丢失率、吞吐量和吞吐率、数据包到达时延抖动和往返传播时延等服务质量控制参数,作为动态反馈来自动判断网络状况,并根据网络状况自动调节编码方式,因而这种协议非常适合多媒体数据实时传输。基于RTP/RTCP设计并成功实现了手机报警系统,经过仿真实验,视频、音频等数据传输都很流畅,该系统正在测试和推广使用中。手机用户的大幅增加和手机费用的逐步降低,为该技术的推广提供了便利条件。
参考文献
[1] LOVSE J W, TESKEY W F, LACHAPELLE G, et al.Dynamic deformation monitoring of tall structures using GPS technology[J]. Journal of Surveying Engineering.1995,121(1):35-40.
[2] 周建郑.GPS测量定位技术[M].北京:化学工业出版社,2004.
[3] SCHULZRINNE H, CASNER S, FREDEIRCK R, et a1.RTP: a transport protocol for real—time applications[S].RFC 1889,1996.
[4] BUSSE I, DEFFNER B, SCHULZRINNE H. Dynamic QoS control of multimedia applications based on RTP [J].Computer Communication,1996,19(1):49-58.
[5] ZHANG Ke, XIE Zhong Cheng, JU Jiu Bin. Real-time repairing lost packets based on real—time transport protocol[J]. Journal of Software,2001,7(12):1042-1049.
[6] 黄维通. Visual C++面向对象与可视化程序设计[M].北京:清华大学出版社,2003:84-147.
[7] 欧建平,娄强生.网络与多媒体通信技术[M].北京:人民邮电出版社,2002.
[8] 蒋东兴. Windows Sockets 网络程序设计大全[M].北京:清华大学出版社,1999:117-162.
[9] IETF RFC2190. RTP payload format for H.263 video streams[S].1997.
[10] WEN Ger. H.264/AV Cover IP [J]. IEEET Rans Circuits-Syst Video Technology,2003,13: 645-656.
[11] CHOU P A, MORH A E, WANG A, et a1. Error control for receiver—driven layered multicast of audio and video [J]. IEEE Transactions on Multimedia,2001;3(1):l08-122.