WebRTC 入门:一分钟理解会议系统的三种架构(Mesh/SFU/MCU)

在 WebRTC 中,两点之间的 P2P 通话是基础,但当参会人数增加到 3 人、4 人甚至更多时,单纯的点对点连接就会面临挑战。本文将带你深入浅出地了解 WebRTC 会议的三种主流架构:MeshSFUMCU


1. Mesh 架构:完全互联的网状结构

这是最直观、也是最基础的架构形式。

核心原理

假设有 A、B、C、D 四个人需要参会。在 WebRTC 仅支持 P2P 的前提下,为了让所有人都能互通,每个客户端都必须和其余所有人建立连接。

  • A 的视角:A 必须分别和 B、C、D 建立关联,形成 A-B、A-C、A-D 三条通路。只有这样,A 才能把视频传给他们,并接收他们的视频。
  • B 的视角:同理,B 也要和 A、C、D 建立关联。

代码层面

从 WebRTC 的核心载体 PeerConnection 来看:

  • 一对关联关系 = 一个 PeerConnection 对象
  • 例如 A-B 这一关系,在代码中实际就是创建了一个 PeerConnection 对象,该对象内部维护着 A 和 B 之间的 SDP 信令媒体信息
  • 如果是 4 人会议,A 的浏览器里就需要维护 3 个 PeerConnection 对象。

优缺点

  • 优点:服务器成本低(因为不需要服务器转发媒体流,只负责信令),逻辑简单。
  • 缺点 :客户端带宽压力极大 。一个 N 人会议需要建立 N × (N − 1) / 2 条 P2P 连接 , 每个客户端需要维护 N − 1 条 RTCPeerConnection,连接数量呈平方级增长。

2. SFU 架构:高效的"中心转发"

SFU(Selective Forwarding Unit,选择性转发单元)是目前主流的会议架构。它引入了一个服务器作为中转站,客户端只发一路流给服务器,服务器负责把这路流"复制"并转发给其他参会者。而这个服务器则被称为 SFU 服务器

核心原理

为了理解 SFU,我们可以拿发快递做比喻:

  • Mesh 架构:就像是你(A)要给 B、C、D 三个人送礼物,你需要亲自开车跑三趟,分别把礼物送到他们每个人手里。

  • SFU 架构 :就像是一个快递集散中心

    • 你(A)只需要把礼物打包发给集散中心(SFU 服务器)。
    • 集散中心收到后,负责把你的礼物分别派送给 B、C、D。
    • 同理,B、C、D 也只需要把他们的礼物发给集散中心,由集散中心统一转发给你。

代码层面

在 SFU 架构中,代码逻辑发生了质的变化:

  • 1 个 PeerConnection:无论会议室里有多少人,每个客户端只需要维护 1 个 PeerConnection 对象。

    虽然每个客户端只需要维护 1 个 RTCPeerConnection ,但这个连接中会承载 多路 MediaStreamTrack 。因此客户端的下行带宽和解码压力,仍然随参会人数线性增长(N−1)

  • 对端永远是 SFU:这个 PeerConnection 的连接对象永远是 SFU 服务器,而不是其他客户端。

架构优势

  1. 客户端连接数低:每个客户端只需要 1 个 PeerConnection
  2. 上行带宽压力小 :无论会议中有多少人,客户端始终只上传 1 路音视频流
  3. 延迟低:SFU 只做媒体转发,不解码、不混流,延迟接近 P2P
  4. 扩展性好:支持几十人规模的会议,是当前主流视频会议系统的核心架构

缺点

  1. 下行带宽仍然随人数增长 :客户端需要接收 N−1 路媒体流,下行带宽和解码压力线性增加。
  2. 服务器带宽成本高:虽然不吃 CPU,但对服务器出口带宽要求很高。

3. MCU 架构:全能的"媒体大脑"

MCU(Multipoint Control Unit,多点控制单元)它大体上和 SFU 类似,但它不仅仅是转发,还会对流进行混合(Mixing) 、转码和处理。服务器把所有人的画面拼合成一张图,编码成一路视频流发给客户端。

适用场景

MCU 专为媒体场景复杂的情况设计,例如:

  • 多种不同设备接入:接入会议的不只是手机电脑,还有监控摄像头(RTSP流)、硬件终端。
  • 直播与转播:需要将会议画面推流给成千上万的观众。
  • 云端录制:需要对会议进行高质量存档。

MCU 服务器内部做的事

所有参会的流首先进入 MCU 服务器,在这里,它们会经历深度的处理:

  1. 媒体转码:这是 MCU 的核心能力。

    • 比如监控摄像头的视频是 H.265 格式,浏览器不支持,MCU 可以将其实时转码为 H.264。
    • 将 RTMP、RTSP 等协议转换为 WebRTC 标准的 RTC 流,或者将 RTP 转为 FLV 供直播使用。
  2. 云端录制:服务器可以直接过滤并录制经过的流。

  3. 服务端 AI 检测

    • 在大型直播中,内容安全至关重要。MCU 可以在服务端接入 AI 鉴别中心,实时检测直播内容。
    • 一旦发现非法内容,AI 可以直接切断直播,确保安全。
  4. 其他能力:媒体流混合(将多个人画面合成一个画面)、音频提取、视频抽帧存档等。


总结

在 WebRTC 多人实时通信中,架构选择的本质 ,是如何在 客户端压力、服务器成本、延迟和功能复杂度 之间做取舍。

维度 Mesh SFU MCU
PeerConnection N−1 1 1
客户端上行 N−1 路 1 路 1 路
客户端下行 N−1 路 N−1 路 1 路
服务器压力 极低 中(带宽) 极高(计算)
延迟 最低 较高
扩展性 极差 很好
典型应用 1v1 视频会议 直播 / 融合
相关推荐
我的div丢了肿么办1 天前
js中worker的详细讲解
前端·javascript·vue.js
陈泡泡_1 天前
Android抓取trace的几种方式
前端
外啫啫1 天前
vue3实现前端生成word并下载
前端·javascript
嘻哈baby1 天前
Redis缓存三大问题实战:穿透、雪崩、击穿怎么解决
后端
Cache技术分享1 天前
282. Java Stream API - 从 Collection 或 Iterator 创建 Stream
前端·后端
用户3074596982071 天前
ThinkPHP 6.0 多应用模式下的中间件机制详解
后端·thinkphp
豆豆1 天前
主流的企业建站方式,sass云建站和自助建站系统怎么选择?
前端·css·低代码·cms·sass·低代码平台·站群
格格步入1 天前
支付幂等:一锁二判三更新
后端
技术小泽1 天前
搜索系统架构入门篇
java·后端·算法·搜索引擎