WebRTC 之实现过程

By | 2017年8月10日

ClientA 向 ClientB发起视频请求,具体过程如下:

1.ClientA首先创建PeerConnection对象,将视频数据封装成MediaStream添加到PeerConnection中。

2.ClientA调用PeerConnection的CreateOffer方法创建一个用于offer的SDP对象,SDP对象中保持当前音视频的相关参数。ClientA通过PeerConnection的SetLocalDescription方法将SDP保存起来,并通过Signal服务器发送给ClientB。

3.ClientB接收到ClientA发送过来的offer SDP对象,通过PeerConnection的SetRemoteDescription方法将其保存起来,并调用PeerConnection的CreateAnswer方法创建一个answer SDP,通过PeerConnection的SetLocalDescription的方法保存应答的SDP对象并将它通过Signal服务器发送给ClientA。

4.ClientA接收到ClientB发送过来的answer SDP对象,将其通过PeerConnection的SetRemoteDescription方法保存起来。

5.在SDP信息的offer/answer流程中,ClientA和ClienetB就已经根据SDP信息创建好相应的音频Channel和视频Channel并开启Candidate数据的收集,Candidate可以简单的理解成Client端的IP地址信息(本地IP地址、公网IP地址、Relay服务端分配的地址)。

6.当ClieneA收集到Candidate信息后,PeerConnection会通过OnIceCandidate接口给ClientA发送通知,ClientA将收到的Candidate信息通过Signal服务器发送给ClientB,ClientB通过PeerConnection的AddIceCandidate方法保存起来。 同样当ClientB收集到Candidate后过程跟前者已有。

7.这样ClientA和ClientB就已经建立了音视频传输的P2P通道,ClientB接收到ClientA传送过来的音视频流,会通过PeerConnection的OnAddStream回调接口返回一个标识ClienetA端音视频流的MediaStream对象,在ClientB端渲染出来即可。同样操作也适应ClientB到ClientA的音视频流的传输。

Category: iOS

发表评论

电子邮件地址不会被公开。 必填项已用*标注