概述
mediasoup是SFU模式的媒体服务器。SFU(Selective Forwarding Unit)模式是从房间中的每个参与者接收音频和视频流,并将其转发给其他人(终端发送一个并接收很多)。 与mixer或MCU(Multipoint Control Unit)相比,这种设计有更好的性能,更高的吞吐量和更少的延迟。 它具有高度的可扩展性,因为它不会转码或混合媒体,所以需要更少的资源。
由于终端分别获取其他参与者的媒体,所以他们可以有一个个性化的布局,并能选择要渲染的流显示。有关SFU体系结构的详细信息可以在RFC 7667“RTP拓扑”部分3.7中找到。
mediasoup 目标成为WebRTC SFU(Selective Forwarding Unit)。
在服务器端是一个Node.js模块。
在客户端是一个小小的SDK。
极简主义: 仅仅处理媒体层。
在客户端和服务器端使用流行的ECMAScript 6 API。
支持所有现有的WebRTC和ORTC浏览器。
不要求特定的信令协议。
Server side
与其他现有的SFU实现不同,mediasoup不是一个独立的服务器,而是一个可以集成到一个更大的应用程序中的Node.js模块:
const mediasoup = require("mediasoup");
因此,在内部,媒体可以分解为两个分离的组件:一个为Node.js提供现代ECMAScript 6 API的JavaScript层,
处理媒体层(ICE,DTLS,RTP等)的一组C/C ++子进程。
两个组件通过进程间通信相互通信。 但是