首页 > web前端 > js教程 > 正文

WebRTC SFU:完整指南。

PHPz
发布: 2024-07-19 14:32:17
原创
967 人浏览过

什么是WebRTC SFU(选择性转发单元)?

选择性转发单元或 SFU

SFU是一个基于服务器的架构,用于webrtc中进行多方视频通话、音频通话和数据传输。

SFU 充当设备之间的中介,从多个设备接收媒体流,然后决定哪些流必须发送到哪些设备。

什么是 WebRTC?

WebRTC 是一个开源项目,使用它您可以在设备之间实现实时音频、视频和数据传输

WebRTC 在网络浏览器和应用程序中运行,WebRTC 受到几乎所有现代浏览器的支持,并且是视频、音频通信的标准

Image description

SFU 或选择性转发单元如何工作

这是有关 SFU 如何工作的分步指南

第 1 步客户端连接和媒体捕获

  1. 参与者连接

每个参与者首先与SFU建立连接。此过程涉及交换会话描述的信令服务器。

会话描述包含重要信息,用于建立会话。

2.媒体流捕获

在客户端,从参与者设备捕获媒体流,例如来自麦克风的音频、来自摄像头的视频等。下一步,这些流将发送到 SFU

第2步:流传输到SFU

  1. 编码并发送流:客户端设备使用视频和音频编解码器对媒体流进行编码,并将其发送到SFU

如果需要加密,可以使用 RTP 协议或 SRTP 协议来完成

2. SFU 收据

SFU 或选择性转发单元从每个连接的设备接收单独的流,并为每个设备维护单独的入站流。

SFU 的第 3 步流处理

  1. 禁止混合

在 SFU 中,与 MCU 相比,所有流都是彼此分离的,并且没有混合

2.选择性转发

SFU 从连接到 SFU 的每个设备接收单独的流,然后 SFU 为每个参与者维护单独的流

第 4 步:通过 SFU 进行流分配

  1. 适应:

在将流转发到 uesrs 之前,SFU 对流执行某些调整,例如选择不同质量的视频编解码器以及在不同的联播流之间进行选择。

这些基于接收客户端 CPU 和带宽能力

2*。转发流*

SFU转发每个客户端请求的流。

客户端设备可以从 SFU 接收多个流,甚至单个视频和音频数据流

  1. RTP 或 SRTP 数据包

媒体以 RTP 或 SRTP 数据包形式发送,因为不同的客户端设备可能有不同的 CPU 和带宽限制。

SFU 优化流媒体数据包的流动,使流媒体流畅,视频质量在设备上流畅

步骤5 客户接待及展示

  1. 解码:每个客户端从 SFU 接收 RTP 流,然后客户端对流进行解码并将其呈现在屏幕上

  2. 同步:音频和视频同步很重要,它是在客户端级别处理的。客户端使用 RTP 流中的时间戳和序列号来平滑同步视频和音频播放

SFU vs p2p vs MCU

在本节中,让我们考虑 SFU(选择性转发单元、点对点或 P2p)与 MCU(多点控制单元)之间的区别

1.  选择性转发单元SFU

选择性转发:SFU接收多个流并选择性地将流转发到设备,而不改变流内容

基于服务器:SFU 依赖于服务器,但该服务器用于路由流,而不用于其他任何用途。

优点:

可扩展性:SFU 具有高度可扩展性,它通过管理将哪个流发送到任何客户端设备来减少单个客户端设备的负载

处理要求低:因为SFU只是转发流,不对流进行任何处理,从而减少延迟和CPU处理要求

流媒体灵活性:

客户端设备可以接收多个流或仅接收一个流或根本不接收流,这完全取决于客户端设备请求哪个流并需要将其显示在屏幕上

缺点:

带宽密集型:SFU 在服务器端是带宽密集型的,因为每个流都由服务器接收,并且 SFU 应该有 CPU 和带宽来处理所有流

2.点对点 P2P

在 P2p 架构中,每个参与者直接连接到另一个参与者,而不需要中间服务器

但通常需要 STUN 服务器或 TURN 服务器来穿越 NAT 并在 NAT 周围中继流

如果您正在寻找 Turn 服务器,您可以考虑计量 TURN 服务器服务提供商

Metered 是一家全球 TURN 服务器提供商,在世界各地拥有 TURN 服务器,连接到距离 TURN 服务器最近的用户,以实现最小延迟和最佳性能

缺点:

如果会议中有多个设备,每个参与者设备必须处理多个流。

这对所有客户端设备来说都是 CPU 和带宽密集型的。为此,您可以考虑计量 SFU

多点控制单元

MCU 混合所有传入流,并从多个流中创建一个流或几个流,然后将其发送到所有客户端

MCU需要服务器上大量的CPU计算和资源,在传输流时也会产生延迟,但它有一个优点,它可以大大减少客户端设备上的计算和带宽要求

以前移动设备速度很慢,网络基础设施也很差,那时候MCU就发挥了很大的作用

但如今,随着技术的进步,它可能会带来延迟增加和视频传输缓慢的糟糕体验。

SFU 在 WebRTC 中的优势

以下是 SFU 在 WebRTC 中的一些优势

1.可扩展性

SFU在WebRTC中最重要的优势是可扩展性。您还可以缩放 P2P 视频通话,但很难创建网格并对其进行缩放

  • 减少客户端带宽
当您以对等 2 对等格式与多个客户端设备进行视频通话时,每个客户端必须将其流发送到所有其他客户端,反之亦然。

因此,每个客户端对带宽和 CPU 的需求呈指数级增长

一些不具备极高带宽和 CPU 计算能力的客户端在视频通话方面遇到困难

2.改进质量管理

SFU 可以明智地决定将哪些流发送到哪些客户端,从而节省时间并提高视频质量

    流适配
SFU可以根据接收设备的带宽和CPU容量来调整流。

如果客户端设备的带宽较低,则 SFU 可以向该特定设备发送低质量流,以便视频流畅运行而无需缓冲

3.减少客户端的处理负载

SFU 处理流管理所需的大部分数据处理,客户端设备本身从所有繁重的工作中解放出来

这对于移动设备和处理能力(即 CPU 能力)较低的设备很有帮助

    CPU 密集程度较低
客户端设备不需要对进入 SFU 进行处理的多个流进行编码和解码,而是由 SFU 为它们执行此操作

因此,这些设备消耗的电池电量更少,运行温度更低,并且需要更少的 CPU 时间

    用户体验
CPU 处理的减少带来更流畅的界面、更凉爽的设备和更好的整体用户体验

4.媒体处理的灵活性

SFU 在您想要如何处理媒体流以及如何在参与者客户端设备上显示视频方面提供更大的灵活性

    独立流控制
客户或会议参与者可以选择他们想要下载的流以及他们想要如何在屏幕上显示流

它们还能够下载不同质量的流或使其自动,以便 SFU 根据客户端设备带宽容量和 CPU 能力选择最佳流

    支持高级功能
SFU 或选择性转发单元支持各种高级功能,例如

同播(能够发送单个视频流的多个质量)、可扩展视频编解码器以及更多

5.增强的灵活性和安全性

所有通过 SFU 的数据流都是端到端加密的,这意味着没有人知道什么数据流正在通过它,甚至连 SFU 也不知道

采用DTLS、SRTP等加密协议进行端到端加密

SFU 可以记录交互,但也无法出于合规目的拦截流。

Image description

计量 TURN 服务器

  1. API: 使用强大的 API 进行 TURN 服务器管理。您可以执行以下操作:通过 API 添加/删除凭据、通过 API 检索每个用户/凭据和用户指标、通过 API 启用/禁用凭据、通过 API 按日期检索使用数据。

  2. 全球地理位置定位:自动将流量定向到最近的服务器,以实现尽可能低的延迟和最高的质量性能。全球任何地方的延迟均低于 50 毫秒

  3. 全球所有地区的服务器:多伦多、迈阿密、旧金山、阿姆斯特丹、伦敦、法兰克福、班加罗尔、新加坡、悉尼、首尔、达拉斯、纽约

  4. 低延迟: 低于 50 毫秒的延迟,在世界任何地方。

  5. 成本效益:即用即付定价,并提供带宽和批量折扣。

  6. 轻松管理:获取使用日志、帐户达到阈值限制时的电子邮件、账单记录以及电子邮件和电话支持。

  7. 符合标准: 符合基于 UDP、TCP、TLS 和 DTLS 的 RFC 5389、5769、5780、5766、6062、6156、5245、5768、6336、6544、5928。

  8. 多租户: 创建多个凭据并按客户或不同应用程序分开使用。获取使用日志、计费记录和阈值警报。

  9. 企业可靠性: SLA 正​​常运行时间为 99.999%。

  10. 企业规模:并发流量或总流量不限制。计量 TURN 服务器提供企业可扩展性

  11. 每月 5 GB 免费: 通过免费计划每月获得 5 GB 免费 TURN 服务器使用量

  12. 在端口 80 和 443 上运行

  13. 支持 TURNS + SSL 以允许通过深度数据包检测防火墙进行连接。

  14. 同时支持 TCP 和 UDP

  15. 免费无限制 STUN

以上是WebRTC SFU:完整指南。的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!