PeerJSで簡単なビデオチャットをしようとしています。私は、PC上のFirefoxとAndroid上のFirefoxとの間でオーディオを送信したい。私はコールを実行することができます(call.on)と私は地元のビデオを見ることができますが、何らかの理由でメディアはちょうど他のユーザーに通っていません。現在、私はエラーを取得しています:ICEが失敗しました。PeerJSコールは開始されましたが、ビデオ/オーディオはありません。
ICE failed, see about:webrtc for more details
私はその簡易版でそのようにあるサーバーがあります。
:その後、私は2つのクライアント、呼び出しを行うPCのための1つを持っているvar ip = require('ip');
var PeerServer = require('peer').PeerServer;
var port = 9000;
var server = new PeerServer({port: port, allow_discovery: true});
を
var SERVER_IP = window.location.hostname;
var SERVER_PORT = 9000;
var localStream = "";
var peerID = "pc"
var peerConnectionID = "and"
var remoteVideo = document.querySelector('#rremote-video');
var localVideo = document.querySelector('#llocal-video');
var peer = new Peer(peerID, {host: SERVER_IP, port: SERVER_PORT});
var conn = peer.connect(peerConnectionID);
var getUserMedia = navigator.mediaDevices.getUserMedia({ video: true, audio: true })
.then(stream => localVideo.srcObject = stream)
.then(stream => localStream = stream)
.catch(e => console.log(e.name + ": "+ e.message));
waitForElement();
function waitForElement(){
if(localStream != ""){
conn.on('open', function(){
conn.send('hi from PC!');
});
peer.on('connection', function(conn) {
conn.on('data', function(data){
console.log(data);
});
});
console.log("we have a stream: "+localStream);
var call = peer.call(peerConnectionID, localStream);
console.log("Calling "+peerConnectionID);
call.on('stream', function(remotestream) {
console.log("Call on.");
remoteVideo.srcObject = remotestream;
});
}
else{
setTimeout(function(){
waitForElement();
},750);
}
}
そして、呼び出しに応答するものである:
var SERVER_IP = window.location.hostname;
var SERVER_PORT = 9000;
var localStream = "";
var peerID = "and"
var peerConnectionID = "pc"
var remoteVideo = document.querySelector('#rremote-video');
var localVideo = document.querySelector('#llocal-video');
var remoteAudio = document.querySelector('#remote-audio');
var localAudio = document.querySelector('#local-audio');
var peer = new Peer(peerID, {host: SERVER_IP, port: SERVER_PORT});
var conn = peer.connect(peerConnectionID);
var getUserMedia = navigator.mediaDevices.getUserMedia({ video: true, audio: true })
.then(stream => localAudio.srcObject = stream)
.then(stream => localVideo.srcObject = stream)
.then(stream => localStream = stream)
.catch(e => console.log(e.name + ": "+ e.message));
waitForElement();
function waitForElement(){
if(localStream != ""){
conn.on('open', function(){
conn.send('hi from android!');
});
peer.on('connection', function(conn) {
conn.on('data', function(data){
console.log(data);
});
});
peer.on('call', function(call) {
console.log("Picking up call.");
call.answer(localStream);
call.on('stream', function(remotestream) {
console.log("Call on.");
remoteVideo.srcObject = remotestream;
});
});
}
else{
setTimeout(function(){
waitForElement();
},750);
}
}
私は間違っていると思っています。私は主にPeerJSウェブサイトの指示に従っています:http://peerjs.com/誰かが変更する必要のあるものを見ることができれば、助けてください!
返信いただきありがとうございます、うまくいけば私はこれでどこかに行くことができます。だから私は私のubuntuにTURNサーバを設定し、私は悪魔を実行しています。私は新しいピアを次のように変更しました: 'var peer = new Peer { config:{'iceServers':[ {urls: 'stun:stun.l.google.com:19302'}、 {URL: https://myurl.com:3478 '、資格情報:' test '、ユーザ名:' test '} }} });と私のローカルpeer.jsをhttps://cdnjs.cloudflare.com/にスワップしましたajax/libs/peerjs/0.3.14/peer.jsのように、https/httpの不一致について不平を言っていましたが、今は "ReferenceError:Peer is not defined"となっています。 – suppp111
自分のピアサーバーをまだ稼働させる必要がありますか?私は本当にもう呼び出さないので、私は思っていませんでした...もう一つの選択肢は、私が "urlへの変更"エラーを受け取っているので、このpeer.jsは実際にはもう機能していないということです。 – suppp111
自分のネットワーク内で完全に操作している場合を除いて、peerjs、stun、およびturnサーバーはすべて自分のマシンではなく、インターネットに接続する必要があります – Mikkel