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 条线这种情况)。

相关推荐
2601_958352904 小时前
对讲系统音频优化实战:解决回声、啸叫、环境噪音与远场拾音难题
嵌入式硬件·音视频·语音识别·降噪处理·音频处理模块·硬件开发模块
南山有乔木7895 小时前
下载的ncm歌曲不能播放怎么办?NCM在线转MP3怎么操作?手机电脑转换教程参考
音视频
开开心心就好5 小时前
解决截图被拦截黑屏问题的免费小工具
安全·智能手机·flink·kafka·pdf·音视频·1024程序员节
2601_958352906 小时前
双麦 DSP 音频模块实战:一文梳理 A-68 在全行业场景的声学解决方案与落地要点
前端·嵌入式硬件·音视频·语音识别·降噪消回音·音频处理模块
十六年开源服务商6 小时前
2026社交媒体营销×WordPress运维:实战避坑指南
运维·媒体
Deitymoon6 小时前
RV1126——OSD模块和SDL_TTF结合输出H264文件
计算机视觉·音视频·rv1126·osd
AI创界者6 小时前
【解压即用】Scail-2 视频动作迁移一键整合包:8G显存通吃50系,长视频/多人/精准目标替换全攻略
人工智能·python·aigc·音视频
狼哥16866 小时前
《新闻资讯》四、视频模块实现指南
ui·华为·音视频·harmonyos
换个昵称都难8 小时前
webrtc源码解析概要介绍
webrtc
音乐宝贝家8 小时前
1000-2000元入门面单吉他横评:面板/背侧板/琴颈/指板/桶型全维度技术拆解
新媒体运营·音视频·社交电子·业界资讯·媒体·零售·内容运营