YanTianFeng的知识库

Want Coding

Want Reading

文章 89

访问 18823

评论 2

头像

YanTianFeng

发私信

文章 89
访问 18823
评论 2
Technology and Code
返回顶部

Knowledge  WebRTC实现点对点通信

标签   webrtc  

  ( 36 )       ( 0 )


WebRTC 实现点对点通信

WebRTC 通话原理

1. 媒体协商

彼此要了解对方支持的媒体格式

比如: Peer - A 端可支持 VP8 、 H264 多种编码格式,而 Peer - B 端支持 VP9 、 H264 ,要保证二端都正确的编解码,最简单的办法就是取它们的交集 H264

注:有一个专门的协议 ,称为 Session Description Protocol (SDP) ,可用于描述上述这类信息,在 WebRTC 中,参与视频通讯的双方必须先交换 SDP 信息,这样双方才能知根知底,而交换 SDP 的过程,也称为 " 媒体协商 " 。

2. 网络协商

彼此要了解对方的网络情况,这样才有可能找到一条相互通讯的链路

(1) 获取外网 IP 地址映射;( 2 )通过信令服务器( signal server )交换 " 网络信息 "

理想的网络情况是每个浏览器的电脑都是私有公网 IP ,可以直接进行点对点连接。

实际情况是:我们的电脑和电脑之前或大或小都是在某个局域网中,需要 NAT ( Network Address Translation ,网络地址转换)

在解决 WebRTC 使用过程中的上述问题的时候,我们需要用到 STUN 和 TURN

WebRTC APIs

1.MediaStream — MediaStream 用来表示一个媒体数据流(通过 getUserMedia 接口获取),允许你访问输入设备,如麦克风和 Web 摄像机,该 API 允许从其中任意一个获取媒体流。

2.RTCPeerConnection — RTCPeerConnection 对象允许用户在两个浏览器之间直接通讯 ,你可以通过网络将捕获的音频和视频流实时发送到另一个 WebRTC 端点。使用这些 Api ,你可以在本地机器和远程对等点之间创建连接。它提供了连接到远程对等点、维护和监视连接以及在不再需要连接时关闭连接的方法。

一对一通话

在一对一通话场景中,每个 Peer 均创建有一个 PeerConnection 对象,由一方主动发 Offer SDP ,另一方则应答 AnswerSDP ,最后双方交换 ICE Candidate 从而完成通话链路的建立。但是在中国的网络环境中,据一些统计数据显示,至少 1 半的网络是无法直接穿透打通,这种情况下只能借助 TURN 服务器中转