#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.