Различают RTCPeerConnection - PullRequest
       78

Различают RTCPeerConnection

0 голосов
/ 14 января 2019

В моем веб-приложении одновременно отображаются четыре потока, поступающие с WebRTC RTCPeerConnection. Каждый раз, когда я получаю предложение, я проверяю, занят ли элемент видео, если я не показываю поток.

bobConn.onaddstream = AddingStream;

function AddingStream(evt) {

    if (video1.readyState === 0){
        video1 = video1 = attachMediaStream(video1, evt.stream);
        video1attached = true;
    } else if (video1.readyState === 4 && video2.readyState === 0){
        video2 = attachMediaStream(video2, evt.stream);
        video2attached = true;
    } else if (video2.readyState === 4 && video3.readyState === 0){
        video3 = attachMediaStream(video3, evt.stream);
        video3attached = true;
    } else if (video3.readyState === 4 && video4.readyState === 0){
        video4 = attachMediaStream(video4, evt.stream);
        video4attached = true;
    }
};

Теперь я пытаюсь обработать событие, при котором произойдет отключение любого из подключений (например, устройство, которое будет отключать потоки), в этом случае элемент video будет заменен изображением информирование об отключении.

Чтобы узнать, какое видео заменить, мне нужно знать, какое соединение было прервано.

Может кто-нибудь сказать мне, как отличить RTCPeerConnection соединения?

редактирование:

function getBrowserRTCConnectionObj () {
    var servers = {'iceServers': [{'url': 'stun:stun.services.mozilla.com'}, {'url': 'stun:stun.l.google.com:19302'}]};

    if (window.mozRTCPeerConnection) {
        return new mozRTCPeerConnection(servers);
    } else if (window.webkitRTCPeerConnection) {
            return new webkitRTCPeerConnection(servers);
    } else if (window.msRTCPeerConnection) {
            return new msRTCPeerConnection(servers);
    } else {
        return new RTCPeerConnection(servers);
    }
};

function getStream(){
    //pytanie: nowy objekt zawsze przyjmuje nazwe connection
    bobConn = getBrowserRTCConnectionObj();
    bobConn.onicecandidate = sentIceCandidates;
    bobConn.onaddstream = AddingStream;
    bobConn.setRemoteDescription(
        new RTCSessionDescription(TempDescriptions),
        function() {
            bobConn.createAnswer(gotDescription, displayError);
            //toggleVideo();
    }, displayError);   
};

ShowStreams ():

function showStreams(){
    var streams = connection.getRemoteStreams();
    for (var stream of streams) {
        console.log("Remote streams: " + stream.id);
    };
};
...