RTCMultiConnection использует существующий поток getUserMedia

#javascript #socket.io #stream #webrtc #rtcmulticonnection

#javascript #socket.io #поток #webrtc #rtcmulticonnection

Вопрос:

Я подготовил приложение для потокового вещания с веб-камеры и поэтому предварительно просмотрел веб-камеру пользователя в теге видео, используя «navigator.mediaDevices.getUserMedia».

После того, как пользователь нажмет кнопку и «RTCMultiConnection» откроет комнату, я хочу добавить веб-камеру / видео для предварительного просмотра, которые будут использоваться в качестве веб-камеры-потока.

Я просто не понимаю, как это работает.

Часть, которую я собираюсь вам показать, начинается после сокета.установлено соединение ввода-вывода — метод «connection.open» также возвращает, что комната создана и соединение установлено. Итак, сигнализация работает — я просто не знаю, как просто прикрепить мое видео к объекту подключения (RTCmulsiconnection).

Я пытался использовать метод «attachStreams», но безуспешно.

 //Get Users Webcam
 navigator.mediaDevices.getUserMedia({
    audio: true,
    video: true
}).then(function(stream) {
    $("#mediaPreview").show();
    let preview = document.getElementById('mediaPreviewVideo');
    preview.srcObject = stream;
    preview.volume = 0;
    preview.play();
});

//Start stream
$("#btnMediaStreamStart").on('click', function(e) {

            //Prevent Default amp; Hide
            e.preventDefault();

            //Add Classes
            $("#mediaPreviewVideo").addClass('webcam-online');
            $("#mediaStreamStatus").show().addClass('bg-success').html('<small><strong>Live</strong></small>');

            connection.socketURL = 'localhost:9001/';
            let connectionRoom = '123';
            connection.open(connectionRoom, function(e) {
                if (e === true) {
                    connection.attachStreams.forEach(function(localStream) {
                        //How to attach the cam stream? Is my previously created video even part of the "streams"?
                    });
                    connection.mediaConstraints = {
                        audio: {
                            deviceId: selectAudio
                        },
                        video: {
                            deviceId: selectVideo
                        }
                    };
                }
            });

 

Ответ №1:

Попробуйте использовать

 connection.addStream(stream);
 

где stream находится ваш уже захваченный поток — возможно, через getUserMedia()