WebRTC

月伴飞鱼 2024-11-17 15:04:00
框架相关
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

WebRTC是一项实时通讯技术。

它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点的连接。

  • 实现视频流和(或)音频流或者其他任意数据的传输。

WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下。

  • 创建点对点的数据分享和电话会议成为可能。

实时通信和即时通信区别

IM 即时通信:

  • 通过文字聊天、语音消息发送、文件传输等方式通信,考虑的是可靠性

RTC 实时通信:

  • 音视频通话、电话会议,考虑的是低延时

应用场景

WebRTC的能力使其适用于各种实时通信场景:

  • 点对点通讯:

    • WebRTC 支持浏览器之间进行音视频通话,例如语音通话、视频通话等
  • 电话会议:

    • WebRTC 可以支持多人音视频会议,例如腾讯会议、钉钉会议等
  • 屏幕共享:

    • WebRTC 不仅可以传输音视频流,还可以用于实时共享屏幕
  • 直播

    • WebRTC 可以用于构建实时直播,用户可以通过浏览器观看直播内容

WebRTC通信过程

WebRTC 实现一对一通信需要哪些基本条件?

WebRTC 终端(两个):

  • 本地和远端,负责音视频采集、编解码、NAT 穿越以及音视频数据传输等

Signal 信令服务器:

  • 自行实现的信令服务,负责信令处理,如加入房间、离开房间、媒体协商消息的传递等

STUN/TURN 服务器:

  • 负责获取 WebRTC 终端在公网的 IP 地址,以及 NAT 穿越失败后的数据中转服务

通信过程如下:

本地(WebRTC终端)启动后,检测设备可用性,如果可用后开始进行音视频采集工作。

本地就绪后,发送 加入房间 信令到 Signal 服务器

Signal 服务器创建房间,等待加入

对端(WebRTC终端)同样操作,加入房间,并通知另一端

双端创建媒体连接对象RTCPeerConnection,进行媒体协商

双端进行连通性测试,最终建立连接

将采集到的音视频数据通过RTCPeerConnection对象进行编码,最终通过 P2P 传送给对端/本地,再进行解码、展示

多人音视频三大架构

Mesh

Mesh 架构是利用 WebRTC 对等连接,在参与会议的各方之间两两 P2P 连接,即 P2P2P2P,形成一个网状结构。

优势

  • 实现简单,只需要 ICE 服务器用于实现 P2P 穿越就行

  • 不需要服务器中转数据,节省开发和成本

  • 充分利用了客户端的带宽资源

缺陷

  • 每端都需要将自己的媒体流发送到其他各端,并从其他各端获取流,占用带宽较多,参与人越多,占用的带宽就越大

  • 所以对带宽的要求极高,Mesh 架构在真实的应用场景中几乎没有人使用

MCU

MCU架构由一个中心化的 MCU 服务器(对媒体流进行编码、转码、解码、混合处理)和多个终端组成一个星形结构。

各终端将自己要共享的音视频流发送给服务器,服务端进行混合后再将复合流发到各端。

优势

  • 每个终端只需发送一份媒体流,再接收单个复合流,减少客户端带宽压力

  • 接收的复合流,所有参与人看到的是相同的画面,客户体验非常好

缺陷

  • 需要一台强大的机器来解码、合成和重新编码这些大量运算的工作,对 CPU 资源的消耗很大

SFU

SFU架构同 MCU ,也是由一个中心化的服务器和多个终端组成。

但与 MCU 不同的是,SFU 服务器不对音视频进行编码、解码、混流等算力较高的工作。

  • 只负责转发媒体或者存储媒体,实际上就是一个音视频路由转发器。

SFU 是最近几年流行的新架构,目前 WebRTC 多方通信媒体服务器大多都是 SFU 架构。

优势

  • 服务端压力相对较小,由于是数据包直接转发,不需要编码、解码,对 CPU 资源消耗很小

  • 直接转发也极大地降低了延迟,提高了实时性

  • 对客户端的宽带要求适中,针对低延迟、高带宽媒体转发进行了优化

缺陷

  • 由于是数据包直接转发,参与人观看多路视频的时候可能会出现不同步
  • 相同的视频流,不同的参与人看到的画面也可能不一致

综合来说:

  • SFU 是三种架构方案中优势最明显而劣势相对较少,是目前最优的一种多方通信架构方案。
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!