WebRTC基于浏览器的开发

WebRTC基于浏览器的开发,第1张

WebRTC需要通过长链接查找到通信双方,然后通过 peer to peer 的方式传输音频数据。

WebRTC中最主要的就是一个叫做 PeerConnection 的对象,这个是WebRTC中已经封装好的对象。每一路的音视频会话都会有唯一的一个 PeerConnection 对象,WebRTC通过这个 PeerConnection 对象进行视频的发起、传输、接收和挂断等 *** 作。
PeerConnection中包含的属性如下:

PeerConnection 中还包含了一些方法:

RTCSessionDescription 类型中包含了两个属性:

A向B发起通信请求

首先WebRTC需要一个信令服务器,也就是一个socket链接用来发起视频通信,发送WebRTC中的 offer 和回复 answer 。
如何搭建一个简单的socket服务器,可以找我的这篇文章《》,也可以是用webSocket搭建信令服务器。

WebRTC需要打洞服务器(一个 stun ,一个 turn )来穿透防火墙等,我们需要配置打洞服务器:

WebRTC由于是未来的一种即时通信的标准,所以目前在Chrome、Firefox和Opera浏览器中有内置插件,均提供一个全局的PeerConnection类。

创建PeerConnection的对象:

创建时需要传入打洞服务器的配置信息,如果不穿入打洞服务器的配置信息,则只可以在内网中使用实时音频通讯。

由于PeerConnection是全局的,所以我们可以通过另外的一种方式进行创建:

如何判断浏览器是否支持WebRTC:

WebRTC也提供了一个全局单例来获取本地的音视频信息:

GetUserMedia需要传入三个参数,第一个参数为配置信息,第二个参数为获取成功的回调,第三个参数为获取失败的回调。
获取到视频流之后

创建一个offer并发送给指定的对象:

创建offer时要同时发送打洞服务器配置信息,WebRTC给了一个监听:

返回的参数中有一个 candidate 属性,便是打洞服务器的配置信息。

音频通话请求是通过socket发来的,需要通过socket去监听。

如果收到了offer,那么需要将offer存到自己的peerConnection中,并且创建一个answer发送回对方。
将offer存入peerConnection中:

创建一个answer并返回给对方:

如果收到了打洞服务器的配置信息,那么需要将打洞服务器的配置信息存入到 peerConnection 中:

发送给对方answer后便可以等待接受对方的数据流了:

至此,整个简单的WebRTC的流程就完成了

1SIP概念理解
2协议学习SIP基本场景分析
3企业开源SIP项目
4SIP常见问题及处理
5SIP基础入门
6我的IOS端SIP电话开发历程
7我的SIP开发之路
8SIP协议&开源SIP服务器搭建和客户端安装

1WebRTC官网
2大佬的笔记
3WebRTC中文网
4RTCBlacker ->Android IOS WebRTC
5iOS下音视频通信-基于WebRTC
6第六章 Webrtc服务器搭建
7webrtc学习: 部署stun和turn服务器
8webrtc编译全过程
9iOS下WebRTC音视频通话(一)
10iOS下WebRTC音视频通话(二)-局域网内音视频通话
11WebRTC样本
12iOS下音视频通信的实现-基于WebRTC

1 WebRTC简介及其与SIP互通
2SIP和WebRTC有什么不同?

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

这是百度百科上的介绍,维基百科也差不多。对完全小白来讲,可能不是很理解这句话。

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

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

最后,需要知道的内容

WebRTC已经纳入HTML5标准
目前支持webrtc的浏览器有 Chrome Firefox Opera,IE不支持~
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消息,提取出其中的SDP和ICE信息就可以了。

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

JSEP并不是信令协议,可以在JSEP的基础上引入SIP等信令协议,使WebRTC应用功能更加完备。

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

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

用JavaScript实现sip协议栈,webrtc应用程序基于这个协议栈开发。这样webrtc client发出的信令就是sip信令,但一般采用websocket为信令传输协议。这样的webrtc client就可以直接注册到支持ws的sip server上了。
jssip 、sipml5 都是这种解决方案。
通过转换网关实现协议的转换,从而互通。一个开源的网关项目就是 webrtc2sip。
webrtc2sip是一个功能很完善的网关,既实现了信令层,也实现了媒体层,编码转换功能很强大,也可以直接当做媒体网关,用于编解码,沟通两端的媒体。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10577495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存