【问题标题】:WebRTC OverheadWebRTC 开销
【发布时间】:2017-03-09 23:26:44
【问题描述】:

我想知道,通过数据通道发送数据时 WebRTC 会产生多少开销。 我知道 Websockets 每帧有 2 - 14 字节的开销。 WebRTC 是否使用更多开销?我在网上找不到一些有用的信息。对我来说很清楚,Datachannels 现在不能使用。媒体流使用了多少开销?

谢谢

【问题讨论】:

    标签: webrtc


    【解决方案1】:

    在应用层,您可以将 DataChannel 视为发送和 通过 SCTP 接收。在 PPID(有效负载协议标识符)字段中 SCTP 标头,Datachannel 设置值 0x51 表示它正在发送 UTF-8 data 和 0x52 用于二进制数据。

    是的,你是对的。 RTCDataChannel 使用 SCTP over DTLS 和 UDP。 DTLS 用于 安全。但是,SCTP 在穿越大多数 NAT/防火墙设置时存在问题。 因此,为了克服这个问题,SCTP 通过 UDP 建立隧道。所以总开销 发送数据的开销是:

    SCTP + DTLS + UDP + IP

    那就是:

    28 bytes + 20-40 bytes + 8 bytes + 20 - 40 bytes

    因此,开销大约是 120 字节。 SCTP 的最大大小 WebRTC 客户端可以发送的数据包是 1280 字节。所以在最大,你可以发送 每个 SCTP 数据包大约 1160 字节的数据。

    【讨论】:

      【解决方案2】:

      WebRTC 使用 RTP 发送其媒体。 RTP 通过 UDP 运行。

      除了通常的 IP 和 UDP 标头外,还有两个附加标头:

      1. RTP 标头本身从 12 个字节开始,并且可以从那里开始增长,具体取决于所使用的内容。
      2. 有效负载标头 - 用于正在使用的特定编解码器的每个数据包的标头。这取决于编解码器本身。

      RTP 旨在使其负载的开销尽可能小,因为您希望获得更好的媒体质量,这意味着将尽可能多的位专用于媒体本身。

      【讨论】:

      • 谢谢,Datachannels 怎么样?我读到他们使用 SCTP over DTLS over UDP,但应用层使用的协议是什么?
      • 见草案-jesup-rtcweb-data-protocol - tools.ietf.org/html/draft-jesup-rtcweb-data-protocol
      • 因此 WebRTC 使用 SRTP over UDP 处理语音和视频(如果 UDP 不起作用,有时它会通过 TCP)。但是数据通道不是通过这个发送的。它在 DTLS 之上通过 SCTP 发送。所以上面的答案有点离题了
      【解决方案3】:

      这是 2 个 peer.js 实例(babylon.js 前端)每 16 毫秒(约每秒 60 个)发送 3 个字节的屏幕截图。

      分析器显示 30,000 位/秒:

      30,000 位 / 每字节 8 位 / 每秒 60 位 = 62.5 字节,因此根据分析器,在 3 个字节之后我发送它是 ~59.5 字节

      我不确定是否有某些东西不计入传入,因为它只分析了一半,15k 位/秒

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 1970-01-01
        • 2016-08-18
        • 2013-05-04
        • 2014-02-07
        • 2018-10-03
        • 2016-04-22
        相关资源
        最近更新 更多