WebRTC通信原理

  1. 音视频编解码:要把自己的音视频编码后发送给对方,对方收到数据要解码
  2. 网络传顺:要把数据传输给对方

1. 媒体协商 – 音视频编解码

彼此要了解对方支持的媒体格式。
在webrtc中,有一个专门的协议,称为SDP(Session Description Protocol),参与视频通讯额双方必须先交换SDP信息,这样双方才能知根知底,而交换SDP的过程,也称为“媒体协商”。

2. 网路协商

STUN(Session Traversal Utilities for NAT, NAT会话穿越应用程序):打洞

是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址(ip+port),查出自己位于那种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。
换句话说,就是知道自己的公网IP地址和端口是多少。
问题是:STUN并不是每次逗鸟鞥成功的为需要的NAT的通话设备分配IP地址的,P2P在传输媒体流时,使用本地带宽,在多人视频通话的过程中,通话质量的好坏往往需要根据使用者本地的带宽确定。

TURN(Traversal Using Relays around NAT)

是STUN/RFC5389的一个扩展,主要添加了Relay(中继)功能。如果终端在NAT之后,那么在特定的情景下,有可能使得终端无法和其他对等端(peer)进行直接的通信,这时就需要公网的服务器作为一个中继,对来往的数据进行转发。

以上是WebRTC中经常用到的2个协议,STUN和TURN服务器我们可以使用google的coturn开源项目来搭建

IC(Interactive Connectivity Establishment,交互式连接建立)

 转自:https://www.cnblogs.com/minbo/p/webrtc-shi-pin.html