Надеюсь с тобой все в порядке,
Я реализовал видеоконференцию 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);
}
}
Задача ещё не решена.
Других решений пока нет …