webrtc 目前被更多的用于音视频通讯开发,包括Facebook,Skype等等。start up guide 参考:https://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-rtcpeerconnection

webrtc的开源项目下载可以参考官网:https://webrtc.org/native-code/development/。需要一些前置工作,准备一些环境。

webrtc通讯流程中涉及诸多概念,像stun,turn,signaling,mediastream等。并且包括诸多模块,像音频后处理(回声消除,噪声抑制,自动增益控制),还有网络自适应带宽(BA),图像处理等。总的来讲,webrtc通讯中涉及3大部分:<1>. peer connection,端与端之间的连接,这里面涉及到stun,turn服务器,就是说如何建立客户端之间的链接,并且传输音视频数据流。<2>. signaling,端与端以及服务器之间的通讯,而通讯内容包括视频格式,stun,turn服务器地址,通话发起等。就是简单的交流,以便开始建立起链接,准备通讯。<3>. mediastream,音视频流的获取以及后处理。这个根据平台以及设备不同会有不同的获取方法,在浏览器中被封装成了一个主要接口getUserMedia。

在上诉三大块中,1,2块设计到两大服务器,就是turn或者stun服务器,以及signaling机制服务器,它们涉及到不同的功能,如上所述。以下是粗略的流程图:




stun以及其扩展turn是ICE框架中的重要协议。ICE即interactive connection establish,用于建立peer之间的链接和数据传输。ICE会逐级依次选择链接的协议,首先是尝试直连,先尝试UDP以减少延迟,再尝试现在TCP,如果直连失败会尝试turn继接方式。如下图:


signaling服务器是针对peer之间的简单信息沟通,包括通讯发起,视频格式,stun服务器等等。这里signal的协议webrtc没有自己的固定处理协议,可以使用自己偏好的协议,如websocket,XHR等。


webrtc中通讯的发起和建立简略流程:

1. A 发起calling,create RTCPeerConnection and call createoffer with a callback. 

2. In the callback,  A calls setLocalDescription. Note that RTCPeerConnection won't start gathering candidates until setLocalDescription() is called: this is codified in JSEP IETF draft.

3. B receive SDP A sends, calling setRemoteDescription

4. B calls createAnswer. and send out B's local SDP.

5. When A receive SDP, call setRemoteDescription.

6. ping!

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐