peerjs, mediaConnection.answer (stream) c выключенными видео или аудио
Я пытаюсь получить поток без звука и видео после вызова события peercall.answer , но я не могу понять одну вещь. Я получаю удаленный поток с включенными треками, ПОЧЕМУ? Как я могу проверить полученный поток? На самом деле я получаю remoteStream без звука и без изображения, как нужно, но я могу убедиться в этом только визуально и на слух. Я хочу предоставить пользователю выбор, войти без видео и аудио.
Пример того что я хочу проверить:
if(peercall.remoteStream.getVideoTracks()[0].enabled===false){
//...do something
}
Сам код:
var peercall,myPeerID;
myPeer.on('open', peerID => { // joining to the roomID with socket.io
socket.emit('joinRoom', {'room': roomId, userData, peerID});
myPeerID = peerID;
})
navigator.mediaDevices.getUserMedia({
audio: true, video: {facingMode: "user", width: 640, height: 360}
}).then(function (myStream) {
myStream.getAudioTracks()[0].enabled=false //disabling my AudioTrack
myStream.getVideoTracks()[0].enabled=false //disabling my VideoTrack
//...here is appending my video to DOM
createMyVideo(video,mediaStream)
socket.on('user-connected', user => { // new user connected, "user" contains his peerID
//new user connected, let's call him
peercall = myPeer.call(user.peerID, myStream, { // my own serialized data
metadata: {
'username': username,
'videoTrack': myStream.getVideoTracks()[0].enabled,
'audioTrack': myStream.getAudioTracks()[0].enabled
}
});// call to user.peerID
peercall.on('stream', function (stream) { // Мне ответили
const video = doc.createElement('video');
if (!callList[peercall.peer]) {
console.log(peercall.remoteStream.getVideoTracks()[0].enabled)// outputs 'true' Почему? but video not displayed
console.log(peercall.remoteStream.getAudioTracks()[0].enabled) //outputs 'true' Почему? but video not displayed
if(peercall.remoteStream.getVideoTracks()[0].enabled===false){ //хочу сделать такую проверку, но получаю треки enabled=true как будто
//...do something
}
//...here is appending remote stream to DOM
addUserVideoStream(video, peercall.remoteStream) // why the remoteStream contains track
callList[peercall.peer] = peercall;
}
});
});
}).catch(function (err) {console.log(err)});
//remoteUser side
myPeer.on('call', function (call) { // someone calling to me
peercall = call;
let callerIdMetadata = peercall.metadata // callerUser`s metadata
const video = doc.createElement('video');
video.muted=false;
navigator.mediaDevices.getUserMedia ( {//предоставляем браузеру права на видео и звук
audio: true,
video: {facingMode: "user",width:640,height:360},
}).then(function(remoteUserStream) { // берем наш видеопоток
mediaConstrain(remoteUserStream.getAudioTracks()[0],false) // disabling Audio
mediaConstrain(remoteUserStream.getVideoTracks()[0],false) // disabling Video
console.log('beforeAnswerMedia',remoteUserStream.getAudioTracks()[0].enabled) //outputs false, and it is OK
console.log('beforeAnswerMedia',remoteUserStream.getVideoTracks()[0].enabled) //outputs false, and it is OK
peercall.answer(remoteUserStream); // let`s answer the call and transfer the mediaStream with disabled audio/video (is not it?) to the caller user
if(!callList[peercall.peer]){
//appending Caller User`s Video
addUserVideoStream(video,peercall.remoteStream)
callList[peercall.peer] = peercall;
}
}).catch(function(err) { console.log(err.name + ": " + err.message); });
});