Mediasoup的SFU媒体服务转发中心详解(与传统SFU的区别)

前言

我们都知道音视频服务的架构方式一般就是3种,即Mesh(网状)、MCU(多点控制单元)和SFU(选择性转发单元)这三种,本文主要详解一下 Mediasoup的SFU媒体服务转发中心的思想,帮助大家更好的理解和使用。


简单说下Mesh、MCU 和 SFU 的定义与区别

架构类型 全称 核心思想 数据流方向 主要特点
Mesh Peer-to-Peer Mesh Network 每个客户端与其他客户端直接建立连接,互相发送/接收流 全连接(N×N) 简单无服务器,但扩展性极差
MCU Multipoint Control Unit 服务器负责接收、混流、转码、再下发 上行到 MCU,再下发混合流 中心处理强,延迟高,资源占用大
SFU Selective Forwarding Unit 服务器只转发数据,不转码、不混流 上行到 SFU,SFU 选择性转发 低延迟、高效率,当前主流架构(如 mediasoup)

再提供个截图的详细对比

  • Mesh 是客户端之间点对点连接,服务器不参与
  • MCU 会在服务器端解码、混流再编码所有音视频流
  • SFU只将接收到的音视频流转发给其他客户端,不进行编解码

拆解

Mediasoup 设计与传统 SFU 概念的"进化差异"------它确实是 SFU,但在跨 Worker 甚至跨 Server 的场景下,它的转发逻辑已经变成"分布式 SFU",不再是单个中心节点在做全部转发。下面分几层给你拆开:


1️⃣ 单 Router / 单 Worker 时:经典 SFU 模型

📊 经典 SFU 架构图

go 复制代码
   A  →\
   B  → >──  Router(中央转发)
   C  →/
         ↓
      统一调度转发到各 Consumer
  • 所有 Producer/Consumer 都在一个 Router 里;

  • Router 是"单点中心",所有 RTP 包都在它里头转发;

  • 完全符合传统 SFU 定义(Selective Forwarding Unit)。


2️⃣ 跨 Worker 时:SFU 被"切片"成多个 Router

假设会议太大,或者负载太重,需要把同一会议拆到多个 Worker。

📊 多 Router "切片" 架构图

go 复制代码
Worker1: Router1 --- 用户 A,B
Worker2: Router2 --- 用户 C,D
Worker3: Router3 --- 用户 E,F

这时每个 Router 仍然是 SFU (局部转发中心),但它们要彼此同步媒体流。

Mediasoup 通过 PipeTransport 在各 Router 之间搭桥,让它们形成"SFU 网格"。


3️⃣ 三 个 Router 互联的实际拓扑

如果三方都互相转发音视频流,最直接的方式是全互联

go 复制代码
Router1 ↔ Router2
Router1 ↔ Router3
Router2 ↔ Router3
  • 每条连线由一对 PipeTransport 组成:

    • Router1 → Router2:1 对 PipeTransport

    • Router2 → Router1:1 对 PipeTransport 这样三 Router 间就有 3 个连接方向 × 2 (双向)= 6 条"线"

  • 每条线都承担着在不同 Router 之间传递音视频流的职责。

3个Router 全互联下的通道数量

Router 组合 PipeTransport 数量(双向) 说明
Router1 ↔ Router2 2 条(1→2 和 2→1 各一对) 双向传流
Router1 ↔ Router3 2 条 双向传流
Router2 ↔ Router3 2 条 双向传流
总计 6 条 PipeTransport 通道 每条都是一对传输通路

📊 三 Router 全互联拓扑图

🔄 PipeTransport 数据流示意图


4️⃣ 为什么要"多 Router 互联",而不是一个中央 Router

传统 SFU 是"单核"模式;Mediasoup 支持多 Worker,是为了:

1、充分利用多核 CPU;

2、支持超大会议;

3、支持跨主机分布式部署;

4、避免单 Router 成为瓶颈或单点故障。

如果仍用"中央 Router"去汇聚所有流,那它又会成为新的瓶颈,所以 Mediasoup 选择了去中心化的 SFU 协作模型 ------每个 Router 既是 SFU 又通过 PipeTransport 构成整体的"SFU 集群"。


5️⃣ 逻辑上的"中心调度",不是"中心转发"

📊 控制面 vs 数据面架构图

  • 在应用层(Node.js 控制端)通常会有一个 Main Router Controller

  • 它不处理 RTP 数据,只负责:

    • 创建/登记各个 Router;

    • 判断跨 Router 通信;

    • 调用 pipeToRouter() 建立桥接;

    • 管理 Producer 与 Consumer 的映射关系。

所以:

  • 数据面(RTP):分布式多 Router 互联;

  • 控制面(信令):中心化协调。


6️⃣总结:SFU 在跨 Work 下的真实形态

层次 职责 是否集中
Router 内部 媒体包选择与转发 本地 SFU(集中)
Router 之间 PipeTransport 桥接 分布式互联
Node.js 层 信令调度与拓扑管理 逻辑中心化

📘 结论:

Mediasoup 在单 Router 内是"中心 SFU",

在多 Router 跨 Worker/Server 场景下演化为"分布式 SFU 网格"

彼此之间用 PipeTransport 全互联(确实会有 6 条线这种情况)。

相关推荐
DisonTangor13 小时前
Step-Audio-R1 首个成功实现测试时计算扩展的音频语言模型
人工智能·语言模型·开源·aigc·音视频
音视频牛哥15 小时前
从低延迟到高可用:RTMP与 HTTP/HTTPS-FLV在App播放体系中的角色重构
人工智能·音视频·音视频开发·http-flv播放器·https-flv播放器·ws-flv播放器·wss-flv播放器
Hommy8815 小时前
如何利用剪映小助手实现视频批量剪辑?
aigc·音视频·批量剪辑·剪映
EasyGBS16 小时前
EasyGBS新版本(v3.7.168)发布!视频能力再度升级!
音视频
私人珍藏库16 小时前
[Android] 迅捷音频(2.9.00)
音视频
你好音视频17 小时前
RTSP推流:RTP包组装逻辑详解
ffmpeg·音视频
Likeadust17 小时前
视频直播点播平台EasyDSS构建安全高效的医疗培训直播新体系
安全·音视频
CV炼丹术18 小时前
告别注意力机制?MamEVSR:基于状态空间模型的事件视频超分新范式
音视频
小贤编程手记18 小时前
从曝光到转化:全域覆盖资源领域,媒体发布平台哪家好?
经验分享·媒体
酷柚易汛智推官18 小时前
从清影2.0看AIGC视频未来:技术、生态与可持续产业价值的竞争逻辑
aigc·音视频·酷柚易汛