基于WebRTC应用层网关在iOS端的设计与实现①
2017-10-20孙建伟
孙建伟 ,李 超 ,2,于 波
1(中国科学院 沈阳计算技术研究所,沈阳 110168)2(中国科学院大学,北京 100049)
基于WebRTC应用层网关在iOS端的设计与实现①
孙建伟1,李 超1,2,于 波1
1(中国科学院 沈阳计算技术研究所,沈阳 110168)2(中国科学院大学,北京 100049)
随着近年来新媒体技术的快速发展,用户对实时音视频通信的质量要求越来越高.WebRTC技术的出现,以其强大的音视频处理引擎迅速占领市场,对多媒体通信行业产生了巨大的影响.然而WebRTC提供的JSEP仅仅能完成简单的媒体链接功能,在企业级的通信中需要结合其他模块或者信令协议才能胜任完整的应用.本文着重研究了WebRTC与SIP的互通问题,并在iOS端基于WebRTC技术设计实现了一种应用层网关,通过实验验证了该网关的可行性与实用性.
WebRTC; 应用层网关; iOS; 实时通信
随着多媒体技术、实时通信技术的发展[1],各种社交和办公应用app增长迅速,例如国外的facebook,skype等.国内的微信,QQ等都有音视频通信的功能.伴随着移动端用户的不断增长,人们通过手机进行音视频通信的需求量也日益增大,如何提高音视频传输质量成为了重点.
WebRTC技术使浏览器成为一个实时通信应用平台[2].目前全球浏览器厂商越来越多的加入到WebRTC技术的大潮中.2011年6月Google提出了开源的即时通讯项目WebRTC,该项目提供了视频会议的核心技术:音视频采集、网络传输、音视频编解码、信号优化和处理等[3].WebRTC给移动通讯行业带来了新突破,这将造成深远的影响.
SIP是IMS的核心技术,对多媒体会话的建立,中断,结束等起着很大的作用,并已发展成熟得到广泛应用.WebRTC强大的音视频处理引擎,吸引越来越多的移动端开发人员研究.WebRTC提供的JSEP是一种弱的信令控制协议,仅仅能完成简单的媒体链接功能,在企业级的通信中需要结合其他模块或者信令协议才能胜任完整的应用.本文详细对比了SIP与WebRTC的差异,以及JSEP与SIP转换存在的问题,最终设计和实现在iOS端WebRTC与SIP融合的应用层网关.
1 WebRTC 与 SIP 转换在 iOS 端的技术简介
1.1 iOS系统背景以及架构
iOS是苹果公司于2007年发布的智能终端操作系统.iOS系统分为以下四部分:核心系统层、核心服务层、媒体层和交互层.
1.2 WebRTC相关技术分析
WebRTC是基于浏览器平台的实时音视频通信技术.如图1 所示,WebRTC 包含三个主要部分:语音引擎模块,视频引擎模块和传输模块.
图1 WebRTC 结构
1.3 SIP协议简介
会话初始协议 SIP(session initiation protocol)是基于文本的,独立于传输层的应用层控制协议.其用于建立,结束以及中断多媒体会话[4].是IMS的核心协议.
2 WebRTC 应用层网关的研究
2.1 需要解决的问题
WebRTC在媒体流控制层面上提出了JSEP的连接方式.在信令层对信令没有提出标准,而是由开发者自己选择.WebRTC提供的JSEP是一种弱的信令控制协议,其与强信令协议的不同在于仅仅能完成简单的媒体链接功能而不能完成整个会话过程的所有控制机制.所以在企业级的通信中需要结合其他模块或者信令协议才能胜任完整的应用.要实现WebRTC与IMS的核心协议SIP相结合,重点在于如何解决信令互通问题.
如图2对二者协议栈的分析对比可得出,WebRTC有一个封装好的基于浏览器的接口.WebRTC通信一般使用HTTP或者Socket,WebRTC可以融合SIP做信令控制.
图2 WebRTC 与 SIP 协议栈对比
如表1对WebRTC与SIP比较可知:
(1)媒体协商协议方面.二者都使用了SDP(会话描述协议),而且都是Offer/Answer请求应答模型.
(2)在媒体传输方面,WebRTC 采用 SRTP,而 SIP采用了RTP也可以使用SRTP.没有使用RTP会话复用的SIP客户端可能无法理解WebRTC的SDP.
(3)在传输控制方面,SIP中RTP和RTCP是单独分开的,在WebRTC中两者存在复用结构.
(4)在音频编解码二者均支持G.711标准而在视频编解码方面WebRTC支持VP8,所以二者没有兼容的编解码.
表1 WebRTC 与 SIP 协议的不同
综上所述,要解决WebRTC与SIP的互通问题,需要进行信令转换,ICE兼容以及编解码等方面的研究.本文重点是设计WebRTC的应用层网关,对于媒体网关解决音视频编解码兼容性问题以及ICE兼容性就不做详细介绍了.
2.2 已有的解决方案
主流的解决方案有以下几种[5]:第一种是基于Java-Script实现SIP协议,在其上构建WebRTC,第二种开发SIP/WebRTC转换网关内置到WebRTC服务器中,第三种是开发SIP/WebRTC转换网关单独作为服务器.
第一种用JavaScript实现SIP协议并给Web应用程序开发者提供JS API.这种WebRTC应用可以支持SIP Server,可与传统SIP客户端进行通信.
第二种和第三种方案是开发SIP/WebRTC网关实现SIP与WebRTC的互通.采用这种解决方案的开源项目webrtc2sip[6](由爱立信公司提出).
上述三种解决方案都存在缺陷,第一种方案是对Web应用程序开发很便利的解决方案,对iOS客户端来说是不适用的.而第二种第三种是开发一个转换网关,不管是嵌入到WebRTC服务器还是单独出一个服务器,都增加了服务器的成本.如果用户量足够大很可能会使服务器性能大大降低.针对以上问题,本文提出在客户端实现JSEP-TO-SIP的应用层网关结构.
3 系统设计
3.1 系统框架
如图3所示的设计中包含了iOS客户端(内嵌JSEPTO-SIP 的信令网关),媒体网关,SIP 服务器.本文主要思想是将信令网关与媒体网关分离.将JSEP-TO-SIP网关嵌入到iOS端,进而减小服务器的压力和开销成本.
图3 iOS客户端到iOS客户端的信令通道
iOS客户端通过JSEP-TO-SIP网关对ROAP/JSEP到SIP的协议转换和对等的iOS客户端连接.iOS客户端应用程序主要实现用户登录,拨号,视频显示界面等.JSEP-TO-SIP网关负责把JSEP信令转换成SIP信令,并发送给SIP服务器,以及将SIP信令转换成JSEP信令.通过信令交换媒体信息后,两端建立起P2P的SRTP媒体通道.
如表2是JSEP与SIP的映射关系.
表2 JSEP 到 SIP 映射
JSEP-TO-SIP网关负责JSEP到SIP的转换以及SIP到JSEP的转换.重点解决的就是WebRTC与SIP协议栈的区别而产生的互通的问题.
3.2 JSEP-TO-SIP网关工作流程举例
如图4所示,JSEP与SIP的交互过程为:
(1)ClientA和ClientB分别创建自己RTCPeer-Connection实例.
(2)ClientA,ClientB 通过 RTCPeerConnection 所提供的setLocalDescription()方法,将自己的SDP描述符等其它参数信息交给RTCPeerConnection实例[7].
图4 JSEP 与 SIP 信令交互过程
(3)ClientA通过RTCPeerConnection所提供的createOffer()方法建立一个包含ClientA的SDP描述符等其它参数信息的offer信令.ClientA将Offer信令发送给JSEP-TO-SIP网关.
(4)JSEP-TO-SIP网关将Offer信令转换成SIP信令的Invite并发送给SIP服务器,SIP服务器根据被叫标识,找到ClientB并发送给ClientB的JSEP-TO-SIP网关.
(5)ClientB将信令中所包含的的SDP描述符等其它参数信息提取出来,通过RTCPeerConnection所提供的setRemoteDescription()方法交给ClientB的RTCPeerConnection实例[7].
(6)ClientB通过RTCPeerConnection所提供的createAnswer()方法建立一个包含ClientB的SDP描述符等其它参数信息的Answer信令.ClientB将Answer信令发送给JSEP-TO-SIP网关.
(7)JSEP-TO-SIP网关将Answer转换成SIP的200 ok发送给SIP服务器,SIP服务器发送给ClientA的JSEP-TO-SIP网关.
(8)ClientA将其中ClientB的SDP描述符等其它参数信息提取出来,用setRemoteDescripttion()方法交给ClientA自己的RTCPeerConnection实例[7].
经过以上步骤,ClientA和ClientB所建立的RTCPeerConnection实例包含了ClientA和ClientB的SDP描述符等其它参数信息[7].建立P2P的SRTP媒体通道,客户端可以进行媒体传输.
3.3 WebRTC在iOS端的应用框架
从谷歌官网下载WebRTC源码,得到源码后,将其编译,然后与PJSIP封装成在iOS平台可用的SDK如图5所示为WebRTC与iOS结合架构图.
图5 iOS 与 WebRTC 结合架构图
采用MVC模型对UI设计,其对项目文件易于管理,并且用户只关心界面的视图效果.
WebRTC语音引擎支持iSAC、iLBC、Opus 3种编解码器.音频NetEQ算法包括抖动缓冲及丢包补偿模块以延迟减至最小并提高音频质量[8].
视频部分包含采集、编解码(VP8)、加密、媒体文件、图像处理与显示、网络传输与媒体流控制等技术[9].
4 测试及比较结果
本文完成了在iOS端WebRTC与SIP融合的应用层网关.并实现了在iOS客户端的WebRTC应用的音视频实时通信.应用层网关主要是基于Node.js实现,WebRTC提供的JSEP是基于RTCPeerconnetion开发的,RTCPeerconnetion是Node.js向开发者提供的一个模块,用于支持WebRTC服务.SIP模块基于pjsip库开发[10].
由于WebRTC采用JSEP作为控制协议,与SIP服务器交互时需要转换为SIP信令.本文搭建的SIP/WebRTC互通实验环境用Asterisk做SIP服务器,由于Asterisk具备媒体编解码能力以及SRTP/RTP转换功能,所以该实验环境中,Asterisk也用作媒体网关.
本次实验用15台iphone进行测试,建立音视频连接,相互通信共计20次.测试中通过WireShark抓包,获得Offer信令经应用层网关生成的INVITE消息和Answer信令经应用层网关生成的200 OK应答消息,分别如图6、图7 所示.分析可知,信令网关在IMS网络中表现的和传统SIP终端一致.20次实验中,在同一局域网内WebRTC应用进行通信,JSEP-TO-SIP网关均可正常工作,达到预期效果,说明本文所提出的在iOS端实现JSEP-TO-SIP网关是可行的.
图6 JSEP-TO-SIP 网关生成的 SIP 请求消息
图7 JSEP-TO-SIP 网关生成的 SIP 应答消息
实验过程中,WebRTC应用实时音视频通信流畅,不过从双方视频画面来看,存在 170 ms-270 ms 的延迟.JSEP-TO-SIP网关对信令的转换带来一定的时间延迟,但比在服务器端实现信令转换的延迟有所减少,放到服务器处理网关转换需要跟服务器交互以及服务器转换网关需要做两次转换,而iOS端延迟的170 ms-270 ms是可以接受的.
5 结论
本文分析了SIP和WebRTC控制协议转换问题,介绍了现存的解决方案,并提出了在iOS端实现JSEPTO-SIP网关.通过搭建实验环境,验证了该方案的可行性以及优越性.当然还需要考虑到JSEP-TO-SIP网关的负载能力,时间延迟以及处理协议转换对iOS端性能的影响和耗电量等问题.
1陈建明,张翼翔.用于移动学习的流媒体服务器研究.微型机与应用,2013,32(3):10–12.
2竹洪涛.一种基于SIP和WebRTC的实时可视对讲方案设计[硕士学位论文].成都:西南交通大学,2013.
3王桐.基于Android智能移动终端的无线远程管控系统研究与应用[硕士学位论文].成都:西南交通大学,2013.
4邓敦望.SIP视频会议服务器设计与实现[硕士学位论文].北京:北京邮电大学,2010.
5Amirante A,Castaldi T,Miniero L,et al.On the seamless interaction between WebRTC browsers and SIP-based conferencing systems.IEEE Communications Magazine,2013,51(4):42–47.[doi:10.1109/MCOM.2013.6495759]
6Mamadou DIOP.Webrtc2sip-smart SIP and media gateway for WebRTC endpoints technical guide.http://www.webrtc2sip.org/technical-guide-1.0.pdf.[2013].
7胡勋,周渊平.基于WebRTC的Android移动端无线视频传输.微型机与应用,2015,34(19):83–85.[doi:10.3969/j.issn.1674-7720.2015.19.024]
8吴江锐.WebRTC语音引擎中NetEQ技术的研究[硕士学位论文].西安:西安电子科技大学,2013.
9胡敏,刘六程,刘鹏.基于WebRTC的视频会议系统的设计与实现.电视技术,2013,37(1):141–143,150.
10黄月祥.基于PJSIP的嵌入式VoIP终端的研究与实现[硕士学位论文].昆明:昆明理工大学,2011.
Design and Implementation of iOS Audio and Video Transmission Based on WebRTC
SUN Jian-Wei1,LI Chao1,2,YU Bo1
1(Shenyang Institute of Computer Technology,Chinese Academy of Sciences,Shenyang 110168,China)2(University of Chinese Academy of Sciences,Beijing 100049,China)
With the development of multimedia technology,and the real-time communication technology,people’s requirement for real-time audio and video communication is higher and higher.The WebRTC technology emerges and occupies the market quickly based on its powerful audio and video processing engine,which has a huge impact on multimedia communications industry.WebRTC JSEP provided,however,can only perform simple media link function.It is required to combine with other modules or signaling protocol to do a complete application in the communication of enterprise.This paper focuses on the WebRTC communication with the SIP,and in the iOS terminal it designs and implements a kind of application layer gateway based on WebRTC technology.Finally,the feasibility and practicability of the gateway is verified with experiments.
WebRTC; application layer gateway; iOS; real-time communication
孙建伟,李超,于波.基于WebRTC应用层网关在iOS端的设计与实现.计算机系统应用,2017,26(10):89–94.http://www.c-sa.org.cn/1003-3254/5987.html
国家科技重大专项-数控系统功能安全关键技术研究(2014ZX04009031)
2017-01-15; 采用时间:2017-02-15