WebRTC подключается по локальному соединению, но выходит из строя через Интернет, происходит обмен сообщениями

Надеюсь с тобой все в порядке,

Я реализовал видеоконференцию WebRTC (только видео) между двумя компьютерами, она отлично работает в локальной сети (Chrome и Opera), хотя она не работает в Firefox. Кроме того, он не работает в Интернете на Chrome и Firefox. Существует обмен сигнальными сообщениями между двумя узлами (один в моем доме, другой за пределами моего дома), но видео не воспроизводится на ПК вне дома (подключенном к ПК в дом через Интернет).

Использованы следующие переменные

navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
window.RTCPeerConnection = window.RTCPeerConnection ||  window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
window.RTCIceCandidate = window.RTCIceCandidate || window.mozRTCIceCandidate ||  window.webkitRTCIceCandidate;
window.RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.webkitRTCSessionDescription;
var peerConnectionConfig = {'iceServers': [{'url': 'stun:stun.services.mozilla.com'}, {'url': 'stun:stun.l.google.com:19302'}]};
var pcOptions = {optional: [{DtlsSrtpKeyAgreement: false}]

Я создал peerconnection, вызвав функцию:

function createPeerConnection(strdata){
//  strdata contains the descreption receved frome the signalings server
log('createPeerConnection');
peerConnection = new RTCPeerConnection(peerConnectionConfig,pcOptions);
peerConnection.onicecandidate = gotIceCandidate;
peerConnection.onaddstream = gotRemoteStream;
peerConnection.onsignalingstatechange = function(ev){
log('============================ '+JSON.stringify(ev));
}
data=data.replace(/@/gi, "\\r\\n");
/*
I use '@' to replace '\r\n'  to avaoid probleme with SQL requests, I
replaced all ocurences of '\r\n' by '@' (str.replace(/\\r\\n/gi, "@");
), I used the same things for answer, offer and candidates.I use PHP and
MySQL to store all messages: candidates, offer and answer,
*/

var description= JSON.parse(data);
try{
log('createPeerConnectionDD');
peerConnection.setRemoteDescription(new RTCSessionDescription(description), function() {
log('set remote description success');
//offere=true;
for(i=0;i<msgss.length;i++){
var data=msgss[i].data.replace(/@/gi, "\\r\\n");
var candidate= JSON.parse(data);
log('cand= '+JSON.stringify(candidate));
peerConnection.addIceCandidate(new RTCIceCandidate(candidate));
}
peerConnection.createAnswer(gotDescription, createAnswerError);
},function(err) {
log('set remote description fail');
});
}catch(e){
log(e);
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]