Rheomesh 是一个由 Rust 编写的 WebRTC SFU(选择性转发单元)库。它提供了一个 SDK 来帮助您构建 WebRTC SFU 服务器。此外,它还提供了使用 TypeScript 的客户端库。
此 SDK 支持以下功能:
- 视频和音频流
- 数据通道
- 同步播出
- 中继
- 记录

概述
Rheomesh 遵循典型的 SFU 架构模式,其中服务器充当中央媒体路由器,在连接的客户端之间有选择地转发媒体流,而无需对媒体内容进行转码。
核心组件
SFU 服务器
SFU 服务器是处理所有媒体路由操作的核心组件:
- Worker:管理系统资源的顶级容器。每个服务器进程创建一个 Worker。
- 路由器:处理多个传输的媒体路由单元。可以将其想象成一个与会者可以交换媒体的“会议室”。可以创建多个路由器,以在不同的媒体会话之间分配负载。
- 传输:用于发布或订阅媒体流的单独连接。
传输层
传输层管理客户端和服务器之间的 WebRTC 连接:
- PublishTransport:处理来自发布内容的客户端(例如摄像头、麦克风)的传入媒体流
- SubscribeTransport:管理向正在消费内容的客户端发出的媒体流
- RecordingTransport:管理用于录制的原始 RTP 传输。
媒体处理
- 发布者:代表接收并处理来自客户端的传入媒体轨道的媒体制作者
- 订阅者:代表向订阅客户端发送媒体轨道的媒体消费者
- LocalTrack/RecordingTrack/RelayedTrack:在客户端之间流动的单个媒体流(视频或音频)
数据流
媒体流处理遵循以下顺序:
- 发布阶段:
- Browser1 创建 VideoTrack 并建立 PublishTransport 连接
- 媒体通过 RTP 协议发送到 SFU 的 PublishTransport
- 发布者组件处理并使曲目可供分发
- 路由阶段:
- 路由器管理发布者和订阅者之间的轨道分配
- 订阅阶段:
- Browser2 建立 SubscribeTransport 连接
- 订阅者组件从发布者接收轨道
- 媒体通过 RTP 转发到订阅客户端的 VideoTrack
关于 Rheomesh 更多详细信息请查看:https://h3poteto.github.io/rheomesh//
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/60088.html