概述

   WEBRTC(Web Real-Time Communication)是一种用于在Web浏览器和移动应用程序之间进行实时通信的开放标准。它通过将音频视频和数据的传输集成到web浏览器中,使得实时视频通信变得简单且无需任何插件或第三方软件。

通信流程

   下图是WEBRTC端到端通信的基本流程
41d38991e406cedfd605724d858c7f52.webp
   具体通信步骤如下:
   1.首先是呼叫端(A)发起呼叫,呼叫端要与信令服务器建立连接,被呼叫端也要与信令服务器建立连接,这样他们就可以经过信令服务器对信令进行中转。
   2.呼叫端A想发起呼叫,必须创建一个PeerConnect,对端的连接对象,创建一个这样的事例,之后拿到本地音视频流,将音视频流添加到连接(PeerConnect)里,以备为后续的媒体协商做准备。
   3.接下来调用PeerConnection的CreateOffer方法创建一个Offer的SDP,创建好SDP之后再调用SetLocalDescrption,把它设置到LocalDescription中,调用这个方法后webrtc底层会发送一个bind请求给stun和turn服务器,stun服务器返回呼叫端A的外网地址和端口并返回给呼叫端。呼叫端通过出口IP和端口与当前获取的IP和端口对比即可判断当前网络是在NAT内部还是之间暴露在公网上。然后根据网络情况生成候选地址(candidate)构建SDP Offer
   4.呼叫端A在获取SDP Offer之后将Offer发送给信令服务器,通过信令服务器中转,将Offer转发给被呼叫者B。这时候B就拿到了呼叫的媒体协商信息Offer/SDP。
   5.被呼叫端B收到SDP信息之后,先创建一个PeerConnection对象,并用这个对象调用SetRemoteDescription将这个SDP设置进去,然后调用CreaeAnswer创建一个被呼叫端B的媒体协商信息Answer SDP。然后调用SetLocalDescription将本地的Answer SDP设置进去。在调用SetLocalDescription时,被呼叫端B也会发送一个bind请求给STUN服务器,与呼叫端一样,被呼叫端也会收到本机出口IP和端口后生产候选地址,并生成Answer SDP通过信令服务器发送该到呼叫端A。
   6.此时呼叫端A和被呼叫端B多得到本段和对端的媒体协商信息SDP,于是便能够根据协商的音视频编码和候选地址进行通信了。


懒熊工作室
94 声望4 粉丝