2013-06-16 14 views
8

se sono in una stanza con altri 7 utenti, mi chiedo se WebRTC costringa ogni utente a stabilire una connessione a ciascuno degli altri partecipanti.In che modo WebRTC gestisce connessioni molti-a-molti?

Ovviamente consumerebbe qualcosa come 7kb/s * 7 di download e persino di upload, e molte connessioni non possono gestirlo se la loro connessione è già occupata. Invece con un qualche tipo di media relay l'utilizzo della larghezza di banda sarebbe solo di 7kb/s ma si perderebbe l'adattamento della larghezza di banda tra pari.

Conosci qualche supporto multimediale o un modo per risolvere questo problema? è il server TURN (come https://code.google.com/p/rfc5766-turn-server/) adatto per questo tipo di lavoro (multicast incluso)?

+0

thread simile qui in SO http://stackoverflow.com/questions/16438933/how-to-build-a-network-using-peer-connections-of-plex-peers –

risposta

2

Dai un'occhiata a http://tools.ietf.org/html/draft-ietf-rtcweb-use-cases-and-requirements-06 per i dettagli sui casi d'uso di WebRTC. Gli autori menzionano una soluzione di conferenza multiutente che utilizza un server centrale. Quindi la migliore soluzione per stabilire conferenze A/V multiutente usando WebRTC è avere un server centrale che faccia il mixaggio audio e la "trasmissione" A/V a tutti i peer.

Questo elude i problemi relativi alla larghezza di banda citati nella domanda. Attualmente un gruppo di start-up e provider di servizi consolidati stanno lavorando su soluzioni di conferenza basate su WebRTC, ma lascia che il tuo motore di ricerca web preferito scelga alcuni esempi.

Un server TURN da solo non è sufficiente poiché TURN viene utilizzato solo per inoltrare i dati per gli host che non possono essere raggiunti direttamente (probabilmente a causa dei firewall). I server TURN non terminano le connessioni WebRTC.

0

Hai ragione che l'adattamento della larghezza di banda tra colleghi è un problema.

Un server TURN non risolve questo problema poiché tutto ciò che viene fornito è fornire un endpoint stabile, in genere per le persone dietro configurazioni NAT molto restrittive.

La soluzione a questo problema si trova nei codec video scalabili. Questi codec video sono progettati specificamente per risolvere il problema della videoconferenza a più vie. H.264/SVC è uno di questi codec scalabile ed è attualmente utilizzato da Google+ Hangouts. VP8 ha anche scalabilità temporale e spaziale e viene utilizzato in WebRTC.

I codec video scalabili sono progettati in modo che parti del flusso, in genere singoli pacchetti UDP, possano essere rimossi dal flusso mantenendo la possibilità di decodificare il video con una qualità inferiore. Vengono utilizzati almeno tre tipi di scalabilità:

  • Temporale, in cui viene ridotto il frame per secondo.
  • Spaziale, in cui viene ridotto il numero di pixel.
  • Qualità, in cui i colori risolti sono ridotti.

Se si implementa un server di videoconferenza, si può andare nel flusso VP8 ad un livello inferiore rispetto al livello WebRTC, fare le modifiche necessarie ad ogni flusso video, e risolvere il problema di larghezza di banda adattamento.

+0

Non è possibile utilizzare la scalabilità VP8 supporto nei browser WebRTC (non hai accesso con l'API esistente). Hangouts utilizza simulcast (che è supportato nelle API esistenti) per inviare più versioni dello stream con qualità diverse in modo che il server (unità di inoltro) sia in grado di selezionare quale inviare a ciascuna destinazione. – ggarber

5

Un server TURN funziona come server di inoltro per abilitare la connettività quando la connettività diretta peer-to-peer è impossibile a causa di firewall o altri problemi di rete. (Ulteriori informazioni here: premere P per le note del relatore.) I server TURN non sono progettati per la distribuzione dei media.

A Multipoint Control Unit A Multipoint Control Unit è possibile risolvere il problema a cui si fa riferimento: esiste una topologia di esempio per questo here.Come indicato nelle note di quella diapositiva:

Questo è un server che è fatta appositamente per fare la distribuzione dei mezzi di comunicazione, e in grado di gestire un gran numero di partecipanti; può anche fare cose intelligenti come come inoltro selettivo del flusso, mixaggio di audio o video, o registrazione.

2

Un server TURN supporta solo l'attraversamento del firewall e il passaggio attraverso NAT. Per una vera conferenza è necessario un tipo di server MCU centrale nel cloud, altrimenti la conferenza non viene ridimensionata man mano che si continua ad aggiungere utenti. Ci sono alcuni server per conferenze per WebRTC, come da https://vline.com/ e http://ngmsvid.com

0

Se la domanda si ferma, ecco il mio suggerimento: In base al server SIP installare un software proxy RTP, come se si sta utilizzando kamailio paio con rtpengine .

2

Sì, è necessario stabilire connessioni separate per ciascun utente. Per risolvere questo problema, è possibile utilizzare un server multimediale come kurento.

Con un server multimediale che ogni peer si connetterebbe al server multimediale, il server combinerebbe quindi i flussi video dei colleghi in uno mettendolo uno accanto all'altro e quindi invierà il nuovo flusso. Ciò risparmia ai colleghi la difficoltà di dover scaricare flussi da ogni altro peer.