Javascript SFU和;客户机?

Javascript SFU和;客户机?,javascript,webrtc,stun,Javascript,Webrtc,Stun,我读过很多关于WebRTC、ICE、晕眩和转身的书 现在,当谈到SFU时,我不确定客户端(最终用户浏览器)和SFU(是webrtc连接吗??)之间建立了什么连接。有人能详细说明一下流程吗 我的假设是:当它是基于SFU的体系结构时。SFU和客户端建立webrtc连接并相互发送数据。SFU了解当前房间中的所有人员并相应地发送数据。 初始信令将sfu服务器的候选ice发送到客户端,反之亦然 我说的对吗?是客户端和SFU之间的连接是WebRTC连接。SFU充当对等端点 在这方面没有区别 对等机和SFU之

我读过很多关于WebRTC、ICE、晕眩和转身的书

现在,当谈到SFU时,我不确定客户端(最终用户浏览器)和SFU(是webrtc连接吗??)之间建立了什么连接。有人能详细说明一下流程吗

我的假设是:当它是基于SFU的体系结构时。SFU和客户端建立webrtc连接并相互发送数据。SFU了解当前房间中的所有人员并相应地发送数据。 初始信令将sfu服务器的候选ice发送到客户端,反之亦然


我说的对吗?

是客户端和SFU之间的连接是WebRTC连接。SFU充当对等端点

在这方面没有区别 对等机和SFU之间的w3c规范,除了它没有定义基于浏览器的客户端的接收,这需要SFU(或MCU)来实现

典型流量
  • 通过信令在每个客户机和SFU端点之间定期交换报价/应答。
    • 如果服务器是报价人它会向客户端发送一个报价以接收同步广播。正常报价,但客户可以在
      setRemoteDescription
      后告知,它将发送单个视频曲目的多个编码(层):
    • 如果客户是报价人则必须创建报价以发送同步广播,例如:
    您不必对视频使用同步广播,但这很常见。音频的发送比较简单,通常也会经过协商,同时客户端会同时接收这两种音频
  • ICE候选人作为本次谈判的正常部分进行交换(在客户和SFU之间)
  • 一旦连接了多个客户端,(选择性转发单元)通常会从每个参与者接收音频和(也称为多尺寸)视频,作为回报,通常会向每个参与者发送来自当前正在讲话的人的大视频和音频,以及来自其他人(某些子集)的小视频。特定的选择性转发逻辑通常由应用程序通过信令控制
  • 每个参与者都有一个加密连接,该连接终止于SFU中间框,而不是彼此。这意味着,即使WebRTC始终是加密的,您与其他参与者的连接在技术上也不是端到端加密的。因此,请确保您信任或控制您的SFU。e2ee对SFU的标准解决方案如下所示

    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},
    ]});