5

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

谢谢

4

3 回答 3

6

在应用层,您可以将 DataChannel 视为通过 SCTP 发送和接收。在 SCTP 标头的 PPID(有效负载协议标识符)字段中,Datachannel 设置值 0x51 表示它正在发送 UTF-8 数据,并设置值 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 字节。WebRTC 客户端可以发送的最大 SCTP 数据包大小为 1280 字节。因此,最多可以为每个 SCTP 数据包发送大约 1160 字节的数据。

于 2014-04-09T11:38:15.423 回答
2

WebRTC 使用 RTP 发送其媒体。RTP 在 UDP 上运行。

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

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

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

于 2012-08-14T07:16:50.760 回答
1

在此处输入图像描述

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

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

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

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

于 2016-12-12T07:57:59.913 回答