文章目录
使用说明
-
???代表有疑问,需要后续补充
-
官网地址:官网文档目录链接
mediasoup 官方文档走读、翻译
总览
一个SFU(选择性转发单元)从终端接收音频和视频流然后转发给其他终端。每个接收终端可以选择接收的流和时空层。与mixer或MCU(多点控制单元)相比,该设计具有更好的性能,更高的吞吐量和更少的延迟。它具有高度的可扩展性,并且由于不需要转码或混合媒体,因此所需资源少得多。
由于端点分别获取其他端点的媒体,因此它们可以具有个性化的布局,并选择要呈现的流以及如何显示它们。
软件设计宗旨
- 是一个选择转发单元;(并列的还有:MCU-多点控制单元,几年前比较流行;Mesh -网状模型,即多个终端之间两两进行连接,形成一个网状结构;不同码流模型的本质差异)
- 支持WebRTC和普通RTP输入和输出
- 在服务器端设计的是Node.js模块
- 客户端是小型JavaScript和C ++库
- 是极简主义设计:只处理媒体分层(分层概念,参考RTP-SVC标准)
- 与信令无关: 不强制任何信令协议
- 非常低级别的API(mediasoup和它的客户端库提供一个超级低级的API。它们的目的是使不同的用例和场景,没有任何约束或假设。)
- 支持现存所有类型的webRTC终端;(webRTC终端 是基于webRTC实现的终端)
- 使与众所周知的多媒体库/工具 可以集成
了解webrtc协议
有助于理解后续api的实现原理
WebRTC 支持通过 DataChannel API 在端到端之间传 输任意应用数据。DataChannel 依赖于 SCTP(Stream Control Transmission Protocol,流控制传输协议),而 SCTP 在两端之间建立的 DTLS 信道之上运行的。
Secure Real-time Transport Protocol(SRTP)用于传输多媒体数据而RTP Control Protocol(RTCP)信息用于监控传输的状态。而DTLS则用于SRTP key及其相关的管理。
如果发生STUN服务器无法建立连接的情况的话,ICE将会使用TURN中继服务器,TURN是STUN的扩展,它允许媒体遍历NAT,而不会执行STUN流量所需的“一致打孔”,TURN服务器实际上在WebRTC对等体之间中继媒体,所以我这里理解的话使用TURN就很难被称为端对端之间通信了.
用例
mediasoup及其客户端库提供了超低级的API。它们旨在实现各种用例和场景,而没有任何约束或假设。其中一些用例是:
- 组视频聊天应用程序。
- 实时一对多(或很少对多)广播应用程序。
- RTP流。
V3 与V2的差异
简而言之,mediasoup v3和mediasoup-client v3(除了新的libmediasoup C ++库)都比其相应的v2版本低级别(参考软件宗旨-low level API)得多,并且具有大量的改进和新功能。下表仅列出最具吸引力的部分:
Feature | v2 | v3 | Description |
---|---|---|---|
mediasoup protocol 【协议】 | [√] | [] | 【v2带有一组JSON消息,必须在客户端和服务器之间盲目交换。尽管这使客户端“从理论上讲更容易”,但使服务器端逻辑变得困难。 相反,在v3中,mediasoup在客户端和服务器端都提供了全面的底层JavaScript API,因此应用程序知道在客户端和服务器之间交换的确切信息种类。】 |
Peers | [√] | [] | 【v2在其API中包含“对等”的概念。对等点只是一个容器,用于保存传输、生产者和消费者(实际上,对等点仅存在于mediasoup JavaScript领域中)。 v3摆脱了“对等”,并基于容纳生产者和消费者的传输强制执行低级API。由应用程序来处理信令级别的“对等”(如果需要),并将mediasoup实体与那些“对等”相关联】 |
Routers | [] | [√] | 【在v2中,mediasoup会议室可容纳对等方。在v3中,会议室已重命名为路由器,并且不容纳对等端,但可以进行传输。将其重命名为路由器使其更适合其实际功能。】 |
Plain RTP injection | [] | [√] | 【v3提供了一个统一的API,可以使用普通的RTP或WebRTC传输,向mediasoup路由器中注入音频/视频或从中提取音频/视频。这使得将诸如FFmpeg或GStreamer之类的知名软件轻松集成到基于mediasoup的应用程序中变得容易。】 |
Multiple binding IPs | [] | [√] | 【在mediasoup v2中,只能将静态IPv4和IPv6对分配给所有传输。相反,在v3中,可以为每个传输提供多个不同的IPv4和/或IPv6地址。这将启用通过公共和专用网络接口传输媒体的方案。】 |
Per worker settings | [] | [√] | 【mediasoup v2公开了一个Server类 ,内部处理N个工作程序(媒体子进程)的类,这些工作程序将它们共享所有相同的设置。在v3中,应用程序独立创建每个工作程序,并可以为其分配不同的设置(例如端口范围,日志级别等)。】 |
Horizontal scalability | [] | [√] | 【通过在v3中使用新的管道传输,可以在媒体级别将在相同或不同主机上运行的两个mediasoup路由器互连,甚至在不同的机器中也可以使用多个CPU内核来提高广播功能变得可行。】 |
Sender side BWE | [] | [√] | 【mediasoup v3实现了发送方带宽估算,可以在用户的时间/空间层之间自动切换,从而将总传输比特率调整为接收方端点中可用的带宽。】 |
Unlimited video layers | [] | [√] | 【mediasoup v2将联播视频流的数量限制为3(“低”,“中”和“高”)。mediasoup v3可以处理无限的空间和 |