Использование собственного потока при повторном согласовании - PullRequest
1 голос
/ 24 апреля 2019

Я хочу использовать свой собственный поток при повторном согласовании.Стандартный способ - передать параметр media в функцию createOffer.В этом случае Янус обрабатывает запрос getUserMedia.

    async switchCamera() {



       this.videoCall.createOffer({


            media: {
                replaceVideo: true
            },

            success: (jsep) => {
                this.videoCall.send({message: {request:"set"}, "jsep": jsep});
            },

            error: (e) => {
                alert(e);
            }
        });






    }

В моем случае я хочу сделать это самостоятельно.Я создал следующую функцию:

    async switchCamera() {


        cameraHelper.switchCamera(); // Sets facing mode
        this.localStream = await cameraHelper.requestMedia(); // Returns media stream




       this.videoCall.createOffer({

            stream: this.localStream,

            success: (jsep) => {
                this.videoCall.send({message: {request:"set"}, "jsep": jsep});
            },

            error: (e) => {
                alert(e);
            }
        });






    }

Если я вызываю функцию switchCamera, Chrome падает на стороне приемника.Последнее сообщение об ошибке перед сбоем следующее:

Uncaught DOMException: Failed to execute 'addTrack' on 'RTCPeerConnection': A sender already exists for the track.

Должен ли я выполнять некоторые другие функции, прежде чем я смогу добавить новый поток?

...