2012-11-15 10 views
5

Stabilisco la connessione WebRTC su Chrome 23. Per collegare lo streaming locale è necessario consentire al browser di utilizzare la videocamera e il microfono. Dal lato del chiamante sto controllando se è possibile ottenere lo streaming locale e non invierò l'offerta fino a questo momento. Quindi l'offerta viene inviata e il browser inizia immediatamente a inviare candidati ICE.Errori in caso di ricezione di candidati ICE prima dell'invio della risposta

Quindi se il browser remoto non ha ottenuto il flusso multimediale locale ancora ricevo SYNTAX_ERR: DOM Exception 12 su peerConnection.addIceCandidate(candidate) per ogni candidato ICE ricevuto.

Ho controllato documentation su addIceCandidate ma non ci sono informazioni sui prerequisiti.

Penso di poter ritardare l'invio di candidati ICE dall'offerente ritardandolo e aspettando il segnale che il client remoto ha aggiunto lo streaming locale, ma questa è una comunicazione aggiuntiva necessaria e non sembra corretta.

Posso in qualche modo aggiungere candidati ICE remoti allo webkitRTCPeerConnection prima che venga inviata una risposta e che il flusso multimediale locale sia collegato?

+0

Per il primo end-point, controllo i candidati ICE remoti dopo aver creato l'offerta (https://github.com/muaz-khan/WebRTC-Experiment/blob/master/ASP.NET-MVC/JavaScript.js#L408) e per il secondo end-point, controllo i candidati ICE remoti quando il secondo peer sa che il primo peer sta per inviarlo offerta in pochi secondi! (https://github.com/muaz-khan/WebRTC-Experiment/blob/master/ASP.NET-MVC/JavaScript.js#L229) –

+0

Grazie per il tuo esempio :). Il mio problema ora è diverso però. Dopo aver impostato 'remoteDescription', posso ottenere i candidati all'ICE bene. Ma quando ritardo di consentire l'accesso ai media dopo che tutti i candidati ICE sono stati ricevuti, nessun candidato viene inviato dal ricevente. Hai gestito questo costringendo gli utenti a consentire l'accesso ai contenuti multimediali prima di entrare nella stanza. Però non è un'opzione per me. – Episodex

risposta

6

Dopo aver scritto questa domanda mi è venuta in mente una risposta ... Non è necessario allegare stream locale prima di ricevere i candidati ICE, ma è necessario impostare remoteDescription (che dovrebbe essere eseguito al momento della ricezione dell'offerta). Nel mio codice ho aspettato impostando remoteDescription e inviando una risposta fino a quando il browser non ottiene lo stream locale.

+0

Ciao @Episodex, cosa hai fatto per aspettare impostando remoteDescription? Molte grazie! –

+1

@GuillaumeCisco Per quanto mi ricordo ho appena impostato un intervallo di 1 secondo e ho aspettato, ma era sbagliato! Se hai lo stesso problema di me, imposta semplicemente 'remoteDescription' prima ancora di accedere alla videocamera. In questo modo il browser gestirà i candidati ICE e stabilirà la connessione. Quindi, quando il flusso video è disponibile, il browser (o il tuo codice - non ricordo ora) invierà una nuova descrizione locale al peer e il video verrà esaminato. Ma era più di due anni fa, molto potrebbe essere cambiato da allora (si spera per il meglio). – Episodex

Problemi correlati