2012-08-13 60 views
5

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

感谢

回答

2

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

除了一般的IP和UDP报头,有两个附加标题:

  1. RTP报头本身从12个字节开始,可以从那里成长,这取决于被使用。
  2. 有效负载标头 - 用于所使用的特定编解码器的每个数据包的标头。这一个取决于编解码器本身。

RTP被设计为具有尽可能少的开销,尽可能在其有效载荷,由于要达到更好的媒体质量,这意味着许多位尽可能专为媒体本身的基本理由。

+0

谢谢你,怎么样Datachannels?我已经读过他们通过UDP上的DTLS使用SCTP,但在应用层上使用的协议是什么? – chaosbohne 2012-08-14 10:54:31

+0

查看draft-jesup-rtcweb-data-protocol -http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol – jesup 2012-11-30 18:52:09

+1

因此,WebRTC使用UDP上的SRTP语音和视频(一段时间结束TCP如果UDP不起作用)。但数据通道不会通过此发送。它通过DTLS上的SCTP发送。所以上面的答案有点偏离了这个问题的主题 – 2015-06-02 01:51:40

3

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

是的,你是对的。 RTCDataChannel通过DTLS和UDP使用SCTP。 DTLS用于安全性为 。但是,SCTP在遍历大多数NAT /防火墙设置时遇到了问题。因此,为了克服这个问题,SCTP通过UDP隧道传输。所以整体开销 发送数据将是开销:

SCTP + DTLS + UDP + IP

,那就是:

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

所以,开销会rougly约120字节。 WebRTC客户端可以发送的SCTP 数据包的最大大小为1280字节。因此,在最大的情况下,您可以为每个SCTP数据包发送大约1160个字节的数据,即 。

0

enter image description here

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

探查显示30000个比特/秒:

30000比特/ 8每字节/每秒60 = 62.5字节位,所以我发送3个字节以后它〜59.5字节根据探查。

我不知道,如果事情没有对进入计数,因为它是唯一的剖析一半,15K比特/秒