SFU 和客户端机器之间存在什么类型的连接?
What type of connection is present between SFU & Client machine?
我已经阅读了大量有关 WebRTC、ICE、Stun 和 Turn 的文章。
现在,谈到 SFU,我不确定客户端(最终用户浏览器)和 SFU 之间建立了什么连接(是 webrtc 连接吗??)。有人可以详细说明流程吗?
我的假设:当它是基于 SFU 的架构时。 SFU 和 Client 建立 webrtc 连接并相互发送数据。 SFU 知道当前房间里的所有人并相应地发送数据。
初始信号将 sfu 服务器的 ice 候选者获取到客户端,反之亦然。
我说得对吗?
是的,客户端和SFU之间的连接是WebRTC连接。 SFU 充当对等端点。
没有区别
对等点和 SFU 之间的 w3c 规范,除了它没有在基于浏览器的客户端中定义 reception of simulcast,你需要一个 SFU(或 MCU)来实现.
典型流量
- 通过信令在每个客户端和 SFU 端点之间进行定期 offer/answer 交换。
- 如果服务器是提议者,它会向客户端发送接收联播的提议。一个正常的报价,除了客户可以在
setRemoteDescription
之后知道它将发送单个视频轨道的多个编码(层):
pc.getSenders()[0].getParameters().encodings.length // > 1 means simulcast
- 如果客户是报价者,它必须创建一个报价以发送联播,例如像这样:
pc.addTransceiver(videoTrack, {sendEncodings: [
{rid: "hi"},
{rid: "mid", maxBitrate: 500000, scaleResolutionDownBy: 2},
{rid: "low", maxBitrate: 150000, scaleResolutionDownBy: 4},
]});
您 不必 对视频使用联播,但这很常见。发送音频更简单,通常也可以协商,以及客户端接收两者。
- 作为此协商的正常部分(在客户和 SFU 之间)交换 ICE 候选人。
- 一旦多个客户端连接,SFU(选择性转发单元)通常会接收来自每个参与者的音频和(联播a.k.a。多尺寸)视频,并且在 return通常向每个参与者发送来自当前正在发言的任何人的大视频和音频,以及来自其他所有人(的某些子集)的较小视频。具体的选择性转发逻辑通常由应用程序通过信令控制。
每个参与者都有一个终止于 SFU 中间盒的加密连接,而不是彼此之间。这意味着即使 WebRTC 始终是加密的,您与其他参与者的连接在技术上并不是端到端加密的。因此,请确保您信任或控制您的 SFU。 e2ee over SFU 的标准解决方案是 in development.
我已经阅读了大量有关 WebRTC、ICE、Stun 和 Turn 的文章。
现在,谈到 SFU,我不确定客户端(最终用户浏览器)和 SFU 之间建立了什么连接(是 webrtc 连接吗??)。有人可以详细说明流程吗?
我的假设:当它是基于 SFU 的架构时。 SFU 和 Client 建立 webrtc 连接并相互发送数据。 SFU 知道当前房间里的所有人并相应地发送数据。 初始信号将 sfu 服务器的 ice 候选者获取到客户端,反之亦然。
我说得对吗?
是的,客户端和SFU之间的连接是WebRTC连接。 SFU 充当对等端点。
没有区别 对等点和 SFU 之间的 w3c 规范,除了它没有在基于浏览器的客户端中定义 reception of simulcast,你需要一个 SFU(或 MCU)来实现.
典型流量
- 通过信令在每个客户端和 SFU 端点之间进行定期 offer/answer 交换。
- 如果服务器是提议者,它会向客户端发送接收联播的提议。一个正常的报价,除了客户可以在
setRemoteDescription
之后知道它将发送单个视频轨道的多个编码(层):
pc.getSenders()[0].getParameters().encodings.length // > 1 means simulcast
- 如果客户是报价者,它必须创建一个报价以发送联播,例如像这样:
您 不必 对视频使用联播,但这很常见。发送音频更简单,通常也可以协商,以及客户端接收两者。pc.addTransceiver(videoTrack, {sendEncodings: [ {rid: "hi"}, {rid: "mid", maxBitrate: 500000, scaleResolutionDownBy: 2}, {rid: "low", maxBitrate: 150000, scaleResolutionDownBy: 4}, ]});
- 如果服务器是提议者,它会向客户端发送接收联播的提议。一个正常的报价,除了客户可以在
- 作为此协商的正常部分(在客户和 SFU 之间)交换 ICE 候选人。
- 一旦多个客户端连接,SFU(选择性转发单元)通常会接收来自每个参与者的音频和(联播a.k.a。多尺寸)视频,并且在 return通常向每个参与者发送来自当前正在发言的任何人的大视频和音频,以及来自其他所有人(的某些子集)的较小视频。具体的选择性转发逻辑通常由应用程序通过信令控制。
每个参与者都有一个终止于 SFU 中间盒的加密连接,而不是彼此之间。这意味着即使 WebRTC 始终是加密的,您与其他参与者的连接在技术上并不是端到端加密的。因此,请确保您信任或控制您的 SFU。 e2ee over SFU 的标准解决方案是 in development.