在近年来随着用户对音视频通话质量要求的提高, WebRTC以其强大的多媒体处理能力得到了广泛的应用. 然而WebRTC提供的JSEP是一种弱信令, 在企业级的融合通信应用中必须将WebRTC与实际的信令协议相结合. SIP是IMS的核心技术, 对多媒体会话的控制起着非常重要的作用. 本文介绍了WebRTC和SIP协议融合的已有方案, 研究了WebRTC和SIP协议互通需要解决的问题, 提出了一种WebRTC的PeerConnection层和SIP协议在客户端的融合方案, 并和其他方案对比, 得出该方案的优缺点.
In recent years, with the user’s requirements on the audio and video communications quality being higher, WebRTC has been widely used for its powerful multimedia processing capabilities. WebRTC only provide a kind of weak signaling JSEP, but enterprise-class converged communications applications must be combination of WebRTC and the actual signaling protocol. SIP protocol is the core technology of IMS, which plays a very important role in the control of multimedia conversation. This paper introduces the existing schemes of WebRTC and SIP protocol integration, studies the problems of WebRTC and SIP protocol integration, and presents a scheme of converged communications of combining WebRTC PeerConnection and SIP protocol based on clients. This study also compares the advantages and the disadvantages of this scheme with other schemes.
Web实时通信(WebRTC)[
会话初始协议(Session Initiation Protocol, SIP) 是一个应用层的信令控制协议, 是IMS的核心的、成熟的、已经得到广泛应用的技术, 用于创建、修改和释放一个或多个参与者的会话. WebRTC提供的JSEP是一种仅维护信令状态机的弱信令控制协议, 在企业级融合通信应用中必须将WebRTC和实际的信令协议相结合.
本文介绍了WebRTC和SIP融合已有的两种方案, 分析了WebRTC和SIP互通需要解决的问题, 提出了一种WebRTC的PeerConnection层和SIP协议在客户端融合的方案, 最后在多种客户端实现了WebRTC和SIP融合的应用, 并和其他方案对比得出了此方案的优缺点.
SIP是基于文本的、独立于传输层的应用层IMS核心协议. 其用于建立, 结束以及中断多媒体会话[
WebRTC语音引擎支持iSAC、iLBC、Opus 等多种编解码器. 音频NetEQ算法包括抖动缓冲和丢包补偿模块以延迟减至最小并提高音频质量[
从信令的角度来看, 当下主要有两种SIP和WebRTC互通方案[
这种方案通过开发SIP/WebRTC转化网关实现SIP信令和WebRTC信令的转化, 如webrtc2sip[
这种方案用JavaScript实现SIP协议并向Web应用开发者提供JavaScript API. 开发者调用WebRTC JavaScript API开发出的 WebRTC应用可以采用WebSocket传输SIP信令. 开发者通过此类WebRTC应用直接注册并登录支持WebSocket[
基于服务器端的信令转化网关实现WebRTC和IMS网络互通架构
WebRTC C++ API (PeerConnection层)是面向浏览器厂商的, 使的浏览器厂商容易在此基础上实现WebRTC标准的Web API. 本文提出了一种WebRTC的PeerConnection层和SIP协议在客户端实现融合互通的方案, 可以适当避免上述两种方案的缺陷. 该方案主要通过内嵌于客户端SIPRTC本地网关做WebRTC SDP和SIP SDP的转化及SIP信令和 WebRTC PeerConnection API的映射. 该方案基于WebRTC PeerConnection API, 但不局限于C++ API,也包括编译等手段产生的其他语言的PeerConnection 层API, 相应的不同终端结合的SIP模块会有所不同. WebRTC的PeerConnection层和SIP协议在客户端的融合方案架构如
方案一需要在SIP服务器上开发为了兼容WebRTC信令的转换网关, 开发成本较高, 服务器也会因信令的转换产生一定的延迟. 但是该方案会减轻客户端的开发负担. 方案二需要浏览器支持WebRTC, 虽然目前主流的浏览器都已支持WebRTC, 但限于浏览器的WebRTC JavaScript API尚处于草案阶段, 在此基础上开发应用会有所不便. 但这种开发方式的开发流程较为简单, 代码可以实现跨平台. 这两种案都需要服务器端传输通道支持WebSocket; 且这两种方案开发的都是Web应用, Web应用在性能上会低于原生应用.
本文提出的方案首先可以不必在服务器端做兼容WebRTC的开发, 从而减小服务器的压力和信令转换造成延迟; 其次不需要服务器传输通道支持WebSocket, 从而减小服务器传输通道的限制; 最后由于此时客户端由本来的Web App一跃变成Native App, 也一定程度上提高了客户端的性能. 该方案一定程度上加大了客户端的工作量, 但对比方案一的工作量, 该方案的工作量完全可以接受.
WebRTC的PeerConnection层和SIP协议在客户端的融合方案架构
本方案中最重要的一个环节就是SIPRTC本地网关的设计, 其功能包括WebRTC SDP和SIP SDP转化和SIP信令和WebRTC PeerConnection API映射.
WebRTC使用JSEP (JavaScript Session Establish Protocol)提供的弱信令完成媒体协商. JSEP提供的信令分为主叫方的Offer信令和被叫方的Answer信令, 信令中的主要信息均符合SDP (Session Description Protocol)标准. WebRTC和SIP在媒体和信令的异同点对比如
WebRTC和SIP媒体和信令的异同点对比表
类别 | 属性 | WebRTC | SIP |
信令 | 信令协议 | 尚未指定 | SIP |
媒体协商 | JSEP/SDP | SIP/SDP | |
信令传输 | WebSocket | UDP、TCP | |
NAT穿越 | ICE | STUN、TURN、ICE | |
媒体 | 媒体传输 | SRTP | RTP、SRTP |
媒体传输通道 | 音视频使用相同端口 | 一般音视频端口分开 | |
音频编解码 | iSAC、iLBC等 | G.711、G.722等 | |
视频编解码 | VP9、VP8等 | H264、H263等 |
本方案中客户端通过SIPRTC本地网关做信令转化和接口映射, WebRTC PeerConnection和SIP协议的映射流程如
(1) Alice调用PeerConnection层createoffer API, 并通过SIPRTC本地网关转化成SIP (INVITE)消息发送给Bob;
(2) Bob接收SIP消息后, 调用PeerConnection层 setRemoteDescription、createAnswer API, 并通过SIPRTC本地网关转化成SIP (180 Ring、200 OK)消息发送给Alice;
(3) Alice接收SIP消息, 调用PeerConnection 层setRemoteDescription API, 并发送SIP(ACK)消息给Bob, 此时建立了p2p或者通过多媒体中转服务器的多媒体会话;
(4) Alice调用PeerConnection层removeRemoteStream API, 并通过SIPRTC本地网关转化成SIP(BYE)消息发送给Bob;
(5) Bob接收SIP消息, 调用PeerConnection 层removeRemoteStream API, 并发送SIP (200 OK)消息给Alice, 至此完成一次音视频会话.
视各客户端不同, WebRTC 的PeerConnection在不同平台结合的SIP模块稍有不同, 具体来说Windows平台选择pjsip[
本实验在服务器端使用OpenSIPS部署SIP服务器, 使用Google的Stun Server作为ICE代理, 使用Asterisk服务器部署多媒体中转服务器.
在Android、iOS、Windows客户端完成了WebRTC PeerConnection和SIP协议的融合, 并测试了各平台之间的音视频通信. SIPRTC本地网关转化的呼叫和响应信令如
WebRTC PeerConnetion和SIP映射流程
客户端应用设计架构
SIPRTC本地网关转化的呼叫信令
SIPRTC本地网关转化的响应信令
经过多次测试和抓包分析, 验证了WebRTC的PeerConnection层在客户端融合SIP协议方案的可行性, 对比前两种方案, 发现本方案的客户端流畅度要高于前两种方案的客户端; 且本方案服务器造成的延迟要低于方案一的服务器, 特别是服务器负载较大时, 本方案服务器造成的延迟会明显低于方案一的服务器.
本文介绍了已有的WebRTC和SIP协议融合的方案, 研究了WebRTC和SIP协议互通需要解决的问题, 提出了一种WebRTC的PeerConnection层和SIP协议在客户端融合的方案, 通过查阅大量资料、搭建试验环境、编码、测试和对比, 验证了该方案的可行性和优越性. 但是由于使用Google提供的Stun Server做ICE代理, 有时会有明显的延迟, 后期的工作将集中研究、开发及搭建自己的ICE代理; 另外后期我们也将在不同应用场景下对各客户端的稳定性做测试, 尽早将该方案产品从实验室推向市场.
Android端发出呼叫
iOS端视频会话
梁艳. 基于HTML5的WebRTC技术浅析. 信息通信技术, 2014, 8(2): 52-56.
胡敏, 刘六程, 刘鹏. 基于WebRTC的视频会议系统的设计与实现. 电视技术, 2013, (1): 141-143, 150.
Alessandro Amirante, Tobia Castaldi, Lorenzo Miniero, et al. On the seamless interaction between WebRTC browsers and SIP-based conferencing systems. IEEE Communications Magazine, 2013, 51(4): 42-47.