【WebRTC】适合新手宝宝的WebRTC入门教学

文章目录

  • 简述
  • SDP
  • NAT
    • NAT的分类
      • 完全圆锥型
      • 受限圆锥型
      • 端口受限圆锥型
      • 对称型
  • ICE
  • STUN
  • TURN
  • 总结
  • 参考链接

简述

WebRTC通过整合现有的网络协议为设备提供了实时通信的能力,其底层由 C++ 开发,并通过标准化的 JavaScript API 和原生接口(如 C++ 和 Java)向开发者开放。往大了说,WebRTC 实现了一整套支持实时通信的协议和方法。往小了说,WebRTC作为工具为开发者提供了快速开发实时通信系统的一套API。

由于WebRTC具有实时通信的特点,所以其广泛应用于音视频通话、视频直播、电话会议等领域。

接下来我们将一步一步讲解两台身处异地的设备是如何建立双向连接的,在这个过程会遇到许多问题,我们一起看看WebRTC是如何利用现有协议去解决的。

SDP

在因特网中可以通过目标设备的IP+端口向其发送数据,所以想要实现两台设备间的通信就需要互相都知道对方的IP端口。那么如何在茫茫人海中找到她呢,此时可以引入一个中间服务器(信令服务器),想要通信的双方在这个服务器上注册自己并互相发送自己的IP端口等信息。此后双方都知道了对方的IP端口信息就可以实现双向通信。

除了IP和端口信息,通信的双方还需要知道更多,比如说要传递音视频信息,双方要保证一样的编解码方式才可以保证数据在传输后能正常显示。因此WebRTC采用SDP(会话描述协议)用来描绘需要交换的信息,SDP类似JSON/XML只是规定了一种格式,它能够简单明了的表达通信双方想要传达的基本信息,例如音视频编码、地址信息等。

v=0
o=- 0 0 IN IP4 127.0.0.1
s=-
c=IN IP4 127.0.0.1
t=0 0
m=audio 4000 RTP/AVP 111
a=rtpmap:111 OPUS/48000/2
m=video 4002 RTP/AVP 96
a=rtpmap:96 VP8/90000

以上是SDP的一个示例,可以发现每行都由单个字符开始后接“=”,我们称之为Key。SDP规定了固定的key,常用的如下:

  • v - Version,版本,版本,应等于 0。
  • o - Origin,源,包含一个唯一 ID,用于重新协商。
  • s - Session Name,会话名称,应等于-。
  • t - Timing,时间,应等于 0 0。
  • m - Media Description(m= ...),媒体描述。
  • a - Attribute,属性,一个自由文本字段,这是 WebRTC 中最常见的行。
  • c - Connection Data,连接数据,应等于 IN IP4 0.0.0.0

你可能感兴趣的:(webrtc,android,javascript)