Webrt c видеозвонок - PullRequest
       12

Webrt c видеозвонок

0 голосов
/ 28 апреля 2020

Я пробовал этот код

https://codepen.io/websitebeaver/pen/PWmRmj

var config = {
 apiKey: "AIzaSyCTw5HVSY8nZ7QpRp_gBOUyde_IPU9UfXU",
 authDomain: "websitebeaver-de9a6.firebaseapp.com",
 databaseURL: "https://websitebeaver-de9a6.firebaseio.com",
 storageBucket: "websitebeaver-de9a6.appspot.com",
 messagingSenderId: "411433309494"
};
firebase.initializeApp(config);

var database = firebase.database().ref();
var yourVideo = document.getElementById("yourVideo");
var friendsVideo = document.getElementById("friendsVideo");
var yourId = Math.floor(Math.random()*1000000000);
var servers = {'iceServers': [{'urls': 'stun:stun.services.mozilla.com'}, {'urls': 'stun:stun.l.google.com:19302'}, {'urls': 'turn:numb.viagenie.ca','credential': 'webrtc','username': 'websitebeaver@mail.com'}]};
var pc = new RTCPeerConnection(servers);
pc.onicecandidate = (event => event.candidate?sendMessage(yourId, JSON.stringify({'ice': event.candidate})):console.log("Sent All Ice") );
pc.onaddstream = (event => friendsVideo.srcObject = event.stream);

function sendMessage(senderId, data) {
 var msg = database.push({ sender: senderId, message: data });
 msg.remove();
}

function readMessage(data) {
 var msg = JSON.parse(data.val().message);
 var sender = data.val().sender;
 if (sender != yourId) {
 if (msg.ice != undefined)
 pc.addIceCandidate(new RTCIceCandidate(msg.ice));
 else if (msg.sdp.type == "offer")
 pc.setRemoteDescription(new RTCSessionDescription(msg.sdp))
 .then(() => pc.createAnswer())
 .then(answer => pc.setLocalDescription(answer))
 .then(() => sendMessage(yourId, JSON.stringify({'sdp': pc.localDescription})));
 else if (msg.sdp.type == "answer")
 pc.setRemoteDescription(new RTCSessionDescription(msg.sdp));
 }
};

database.on('child_added', readMessage);

function showMyFace() {
 navigator.mediaDevices.getUserMedia({audio:true, video:true})
 .then(stream => yourVideo.srcObject = stream)
 .then(stream => pc.addStream(stream));
}

function showFriendsFace() {
 pc.createOffer()
 .then(offer => pc.setLocalDescription(offer) )
 .then(() => sendMessage(yourId, JSON.stringify({'sdp': pc.localDescription})) );
}

, который я скопировал с этого сайта

https://websitebeaver.com/insanely-simple-webrtc-video-chat-using-firebase-with-codepen-demo#demo

Я запускаю его со своими учетными данными, и он отлично работает от человека к человеку.

Я хотел бы иметь возможность передавать параметры комнаты, например:

myweb .com / camera. php? room = 123

, чтобы иметь возможность создавать много комнат, хотя я не знаю, сможете ли вы

, но мои Javascript и даже больше мои webrt c знание ограничивает меня, так что кто-то, кто делал это раньше, поможет мне, я хотел бы поработать с Firebase в качестве примера (проигрыш не самый ясный, но я учусь).

...