Giter VIP home page Giter VIP logo

Comments (2)

MrChebik avatar MrChebik commented on June 3, 2024

I found:

pc.onaddstream = function (evt) {
    nextRTC.call('remoteStream', {
        member: member,
        stream: evt.stream
    });
};

And I make this:

pc.onaddstream = function (evt) {
    if ($('#id0').val() != $('#id1').val()) {
        nextRTC.call('remoteStream', {
            member: member,
            stream: evt.stream
        });
     }
};

id0 -- id of user, who makes the stream
id1 -- id of joined user

At this case, when a people will join to me, My stream isn't to be finalize (I have one element of video).
But I still have questions. I.e. How I can to allow people join to me, without confirm of active video/audio devices.

from nextrtc-example-videochat.

MrChebik avatar MrChebik commented on June 3, 2024

So, what I did:

At webcam.js (common settings of nextrtc)
I set var isMainStream of previous message, conditional (id0 == id1)

Then, I set video/audio at this:

video : isMainStream
audio : isMainStream

At nextRTC.js
I change join function, removing connecting with stream:

NextRTC.prototype.join = function join(convId, custom) {
    var nextRTC = this;
    nextRTC.request('join', null, convId, custom);
};

At answerResponse:

if (!isMainStream) {
    pc['pc'].addStream(nextRTC.localStream);
}

At offerResponse:

if (isMainStream) {
    pc['pc'].addStream(nextRTC.localStream);
}

At preparePeerConnection:

pc.onaddstream = function (evt) {
    if (isMainStream) {
        nextRTC.call('remoteStream', {
            member: member,
            stream: evt.stream
        });
    }
};

And in additional, when I choose devices, webcam.js:

if (isMainStream) {
    var audioInputSelect = $('#microphones')[0];
    var videoSelect = $('#webcams')[0];
    var selectors = [audioInputSelect, videoSelect];

    function gotDevices(deviceInfos) {
        var values = selectors.map(function (select) {
            return select.value;
        });
        selectors.forEach(function (select) {
            while (select.firstChild) {
                select.removeChild(select.firstChild);
            }
        });
        for (var i = 0; i !== deviceInfos.length; ++i) {
            var deviceInfo = deviceInfos[i];
            var option = document.createElement('option');
            option.value = deviceInfo.deviceId;
            if (deviceInfo.kind === 'audioinput') {
                option.text = deviceInfo.label ||
                    'microphone ' + (audioInputSelect.length + 1);
                audioInputSelect.appendChild(option);
            } else if (deviceInfo.kind === 'videoinput') {
                option.text = deviceInfo.label || 'camera ' + (videoSelect.length + 1);
                videoSelect.appendChild(option);
            }
        }
        selectors.forEach(function (select, selectorIndex) {
            if (Array.prototype.slice.call(select.childNodes).some(function (n) {
                    return n.value === values[selectorIndex];
                })) {
                select.value = values[selectorIndex];
            }
        });
    }

    function start() {
        if (nextRTC.localStream != null) {
            nextRTC.localStream.getTracks().forEach(function (track) {
                track.stop();
            });
        }

        var audioSource = audioInputSelect.value;
        var videoSource = videoSelect.value;

        nextRTC.mediaConfig = {
            audio: {deviceId: audioSource ? {exact: audioSource} : undefined},
            video: {deviceId: videoSource ? {exact: videoSource} : undefined}
        };

        if (settingON) {
            if ($('.online').css('display') == 'none') {
                $('.cam-opt').click(active(true));
            } else {
                active(true);
            }
        }

        navigator.mediaDevices.enumerateDevices().then(gotDevices);
    }

    audioInputSelect.onchange = start;
    videoSelect.onchange = start;

    start();
}

After these changes, when I try to join another person, I get only the video stream, and nothing more.

from nextrtc-example-videochat.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.