WebRTC基础篇之点对点的实时音视频对话解决方案

首先思考的问题:两个不同网络环境的(具备摄像头/麦克风多媒体设备的)浏览器,要实现点对点 的实时音视频对话,难点在哪里?

1. 媒体协商

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

WebRTC基础篇之点对点的实时音视频对话解决方案

比如: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基础篇之点对点的实时音视频对话解决方案

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

STUN

WebRTC通话原理-STUN(1)

STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络

协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址(ip+port),

查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端

端口。

WebRTC通话原理-STUN(2)

使用一句话说明STUN做的事情就是:告诉我你的公网IP地址+端口是什么。

问题是:STUN并不是每次都能成功的为需要NAT的通话设备分配IP地址的,P2P

在传输媒体流时,使用的本地带宽,在多人视频通话的过程中,通话质量的好坏

往往需要根据使用者本地的带宽确定。

那么怎么办?TURN可以很好的解决这个问题。

TURN

WebRTC通话原理-TURN(1)

TURN的全称为Traversal Using Relays around NAT,是STUN/RFC5389的一个拓展,主要

添加了Relay功能。如果终端在NAT之后, 那么在特定的情景下,有可能使得终端无

法和其对等端(peer)进行直接的通信,这时就需要公网的服务器作为一个中继,

对来往的数据进行转发

WebRTC通话原理-TURN(2)

在STUN分配公网IP失败后,可以通过TURN服务器请求公网IP地址作为中继地址。

这种方式的带宽由服务器端承担,在多人视频聊天的时候,本地带宽压力较小。

以上是WebRTC中经常用到的2个协议,STUN和TURN服务器我们使用coturn开源

项目来搭建。

补充:ICE跟STUN和TURN不一样,ICE不是一种协议,而是一个框架(Framework),它整合了STUN和TURN。coturn开源项目集成了STUN和TURN的功能。

在WebRTC中用来描述 网络信息的术语叫candidate。

媒体协商 sdp

网络协商 candidate

3. 媒体协商+网络协商数据的交换通道

从上面1/2点我们知道了2个客户端协商媒体信息和网络信息,那怎么去交换?是不是需要一个中间商去做交换?所以我们需要一个信令服务器(Signal server)转发彼此的媒体信息和网络信息。

WebRTC基础篇之点对点的实时音视频对话解决方案

如上图,我们在基于WebRTC API开发应用(APP)时,可以将彼此的APP连接到信令服务器(Signal Server,一般搭建在公网,或者两端都可以访问到的局域网),借助信令服务器,就可以实现上面提到的SDP媒体信息及Candidate网络信息交换。

信令服务器不只是交互 媒体信息sdp和网络信息candidate,比如:

(1)房间管理

(2)人员进出房间

WebRTC APIs

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

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

WebRTC基础篇之点对点的实时音视频对话解决方案

4. 一对一通话

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

展开阅读全文

页面更新:2024-05-30

标签:公网   终端   对等   实时   带宽   原理   浏览器   解决方案   协议   情况   通讯   地址   服务器   基础   媒体   科技   信息   视频   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top