2012-08-13 30 views
5

Veri kanalları üzerinden veri gönderirken WebRTC'nin ne kadar üstesinden geldiğini bilmek istiyorum. Websockets'ın her çerçeve için 2 - 14 Byte ek yükü olduğunu biliyorum. WebRTC daha fazla Genel gider kullanıyor mu? Web'de bazı yararlı bilgiler bulamıyorum. Benim için açık olan Datachannels şimdilik kullanılamaz. Mediastreams ile ne kadar ek yük kullanılır?WebRTC Overhead

Teşekkür

cevap

2

WebRTC onun medyayı göndermek için RTP kullanır. RTP UDP üzerinden çalışır.

  1. kendisi 12 bayt başlar ve kullanılan alır şeye bağlı olarak, oradan büyüyebilir RTP başlık: zamanki IP ve UDP başlıkları dışında

    , iki ek başlık vardır.
  2. Yük yükü başlığı - kullanılan belirli kodekin her veri paketi için kullanılan başlık. Bu codec'in kendisine bağlı.

RTP, daha iyi bir medya kalitesi elde etmek istediğiniz temel gerekçeden dolayı, yükün üzerinde mümkün olduğunca az yük taşımak için tasarlanmıştır; bu, medyaya mümkün olduğunca çok sayıda bit ayırma anlamına gelir.

+0

sayesinde nasıl DataChannel'lar hakkında?UDP üzerinden DTLS üzerinden SCTP kullandıklarını okudum, ancak uygulama katmanında kullanılan protokol nedir? – chaosbohne

+0

Bkz. Taslak-jesup-rtcweb-veri protokolü - http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol – jesup

+1

Bu yüzden WebRTC, ses ve video için UDP üzerinden SRTP kullanır (bir süre biter UDP çalışmazsa TCP). Ancak veri kanalı bunun üzerinden gönderilmez. DTLS'nin üstüne SCTP üzerinden gönderilir. Yani yukarıdaki cevap, sorunun konusunu biraz kapalı –

3

Uygulama katmanında DataChannel'i gönderen ve 'u SCTP üzerinden alma düşünebilirsiniz. SCTP üstbilgisinin PPID (Yük Kapasitesi Protokolü Tanımlayıcısı) alanında, Datachannel, 0xF değerini, veri için UTF-8 veri ve ikili veri için 0x52 gönderdiği belirtmek üzere ayarlar.

Evet, haklısınız. RTCDataChannel, DTLS ve UDP üzerinden SCTP kullanır. DTLS, güvenliği için kullanılır. Ancak, SCTP'nin çoğu NAT/Güvenlik duvarı kurulumlarını geçme sorunları vardır. Bundan dolayı, bunun üstesinden gelmek için, SCTP UDP'den geçilir. Yani veri göndermek için genel havai yükünü olacaktır:

SCTP + DTLS + UDP + IP

ve şudur:

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

Yani, havai rougly yaklaşık 120 bayt olurdu. Bir WebRTC istemcisinin gönderebileceği SCTP paketinin maksimum boyutu 1280 bayttır. Bu yüzden, max, SCTP paketi başına kabaca 1160 bayt veri gönderebilirsiniz.

0

enter image description here

burada tam olarak 3 bayt her 16 ms (saniye başına ~ 60) gönderme 2 peer.js örnekleri (babylon.js ön uç) bir ekran görüntüsü.

profil 30.000 bit/saniye gösterir: İkinci = 62.5 bayt başına bayt/60 başına

30.000 bit/8 bit, 3 baytlık sonra gönderiyorum bu yüzden bu ~ 59.5 bayt Profiler göre . bir şey gelen sayılır değilse sadece yarısı kadar profilleme çünkü

Ben emin değilim, ikinci 15k bit/

İlgili konular