[webrtc] WebRTC简介及其与SIP互通

最近研究一下 webrtc ,看了几篇paper,以前也尝试运行验证了几个demo,如今把个人理解总结到这里。git

WebRTC

简介

WebRTC,名称源自网页实时通讯(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美圆收购Global IP Solutions公司而得到的一项技术。github

这是百度百科上的介绍,维基百科也差很少。对彻底小白来说,可能不是很理解这句话。web

首先,什么是实时通讯?
举个直白的例子,咱们平时打电话就是实时通讯。如今有不少实时通讯的软件,好比 丁丁有信……这是手机app。PC客户端像XliteLinphone等等。这些客户端接入网络,注册到相应的服务器上就能够进行音频通讯了,支持视频的还能进行视频通讯。拿Xlite来讲,它的信令机制采用的是sip协议。SIP协议是IMS网络普遍使用的信令协议,已经很成熟。两个uesr 经过Xlite客户端注册到sip server(如 Asterisk)上,就能够互相拨打对方的号码音视频通讯了,不过就Xlite来讲,语音通话是免费的,可是视频的话,是要支付money软件才提供视频功能的……浏览器

其次,为何要提出WebRTC?
一直以来,用户若是想经过互联网进行实时通讯,就须要安装软件,要么就得在浏览器中安装插件。WebRTC的宗旨是不需用户安装任何插件,直接使用浏览器就能够进行实时音视频通讯。就是若是WebRTC实现了,咱们打开浏览器,输入网址,登录进去,拨打号码,就能够互相音视频了。再也不须要安软件,也不须要安装额外的浏览器插件。Web版QQ你们都用过吧,如今还只能发发消息发发表情,若是引入WebRTC,那音视频传文件都不在话下,如今QQ客户端有的功能,经过网页访问都能体验,估计到时候都不肯意再装体积愈来愈大的QQ客户端了吧。服务器

最后,须要知道的内容websocket

  • WebRTC已经归入HTML5标准
  • 目前支持webrtc的浏览器有 Chrome Firefox OperaIE不支持~
  • WebRTC没有指定具体的信令协议,具体的信令协议留给应用程序实现。
  • webRTC使用JSEP协议创建会话,什么是JSEP后面说
  • WebRTC采用ICE实现NAT穿越
  • WebRTC客户端之间能够进行点对点的媒体传输。

JSEP

JSEP(JavaScript Session Establishment Protocol,JavaScript会话创建协议)是一个信令API,容许开发者构建更强大的应用程序以及增长在信令协议选择上的灵活性。网络

创建会话最关键的就是媒体的协商,WebRTC虽然没有指定具体的信令协议,可是媒体协商采用了SDP协议。JSEP是干什么的呢,一方面提供接口如createOffer()供web应用程序调用生成SDP,另外一方面提供ICE功能接口。这些功能都由浏览器实现,浏览器
WebRTC传输信令(offer/answer)采用Websocket
须要说明的是,若是web应用程序不使用额外的信令协议,仅使用JSEP,两个WebRTC client (同一个WebRTC client程序,两处登录) 之间也是能够创建连接的,即只要应用程序能解析用WS传递过来的Offer/Answer消息,提取出其中的SDPICE信息就能够了。app

github上codelabdemo 就是不用其余信令协议,直接使用JSEP生成offer/answer信令,而后采用ws协议传输实现的。socket

JSEP并非信令协议,能够在JSEP的基础上引入SIP等信令协议,使WebRTC应用功能更加完备。编码

WebRTC与SIP互通

要想让WebRTC与sip互通,要解决两个层面的问题:信令层媒体层
两个网络使用的信令机制不一样,因此要进行信令的转换,才能完成媒体的协商,创建会话。媒体层要完成编码的转换,以及rtp/srtp转换等功能。这里主要说项信令层面的互通。

信令互通方案

目前sip和webrtc信令上互通有两种解决方案:

  • 用JavaScript实现sip协议栈,webrtc应用程序基于这个协议栈开发。这样webrtc client发出的信令就是sip信令,但通常采用websocket为信令传输协议。这样的webrtc client就能够直接注册到支持ws的sip server上了。
    jssipsipml5 都是这种解决方案。
  • 经过转换网关实现协议的转换,从而互通。一个开源的网关项目就是 webrtc2sip。 webrtc2sip是一个功能很完善的网关,既实现了信令层,也实现了媒体层,编码转换功能很强大,也能够直接当作媒体网关,用于编解码,沟通两端的媒体。
相关文章
相关标签/搜索