Совместное использование экрана с использованием WebRTC при звуковом вызове в javascript

#javascript #jquery #socket.io #webrtc

#javascript #jquery #socket.io #webrtc

Вопрос:

Я собираюсь создать функцию совместного использования экрана с использованием WebRTC. Мой код хорошо работает при видеовызове, но в состоянии аудиовызова это не работает. Вот мой код.

Это для создания однорангового соединения и добавления потока для аудиовызова

 const senders = [];
var mediaConstraints = {audio: true, video: false}
navigator.mediaDevices.getUserMedia(mediaConstraints)
    .then(function (localStream) {
        localLiveStream = localStream;
        document.getElementById("local_video").srcObject = localLiveStream;
        localLiveStream.getTracks().forEach(track => senders.push(myPeerConnection.addTrack(track, localLiveStream)));
            })
    .catch(handleGetUserMediaError);
  

когда поле общего доступа к экрану

 mediaConstraints.video = true;
let displayStream = await navigator.mediaDevices.getDisplayMedia(mediaConstraints)
if (displayStream) {
    document.getElementById("local_video").srcObject = displayStream;
    console.log("senders: ", senders);
    try {
        senders.find(sender => sender.track.kind === 'video').replaceTrack(displayStream.getTracks()[0]);
    } catch (e) {
        console.log("Error: ", e)
    }
}
  

В статусе общего доступа к экрану sender.track.kind имеет значение «аудио»
Итак

 senders.find(sender => sender.track.kind === 'video') = null.
  

При этом replaceTrack выдает ошибку
есть ли какой-либо другой способ совместного использования экрана?

Ответ №1:

Для достижения этого необходимо добавить видеодорожку. Это потребует пересмотра.

Поэтому добавьте дорожку экрана (не заменяйте) к соединению, а затем создайте предложение снова!

 connection.addTrack(screenVideoTrack);
  

Проверьте это для справки:

https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/onnegotiationneeded

Комментарии:

1. Спасибо за ваш ответ. Я уже применил это разрешение, но при создании нового предложения после подключения видеодорожки экрана возвращается ошибка setRemoteDescription.