Я пытаюсь переключить между передней и задней камерой на устройстве с передней и задней камерой. Однако это не работает. Я также пробовал использовать deviceID, но это тоже возвращает undefined deviceID (при проверке на консоли firefox), поэтому я попытался реализовать, используя следующий код:
let FaceUser = true;
$('#togglecamera').click(function(){
FaceUser = !FaceUser;
let str = (FaceUser)?"user":"environment";
let constraints = {
audio: {echoCancellation:true,noiseSuppression:true},
video:{
facingMode:{exact:str}
}
}
navigator.mediaDevices.getUserMedia(constraints).then(function(stream){
let videoTrack = stream.getVideoTracks()[0];
let audioTrack = stream.getAudioTracks()[0];
for(x in caller){
//here caller refers to my webrtc peer connections,i am storing those peer connections in an object caller
var send_client = caller[x].getSenders().find(function(s_s) {
return s_s.track.kind == videoTrack.kind;
});
var send_client2 = caller[x].getSenders().find(function(s_s) {
return s_s.track.kind == audioTrack.kind;
});
send_client.replaceTrack(videoTrack);
send_client2.replaceTrack(audioTrack);
}
//window.stream stores the initial local stream
window.stream.getTracks().forEach(track=>track.stop());
window.stream = stream;
document.getElementById('selfview').srcObject = window.stream;
}).catch(err=>console.log(err.message));
});
В android браузерах (я проверил chrome, Firefox и opera ), при нажатии кнопки переключения, затем Firefox или opera снова показывает параметры камеры и микрофона, но при изменении источника изменений не происходит. и chrome вообще не показывает никаких опций. Что не так, что я здесь делаю? Или есть какой-нибудь более подходящий способ заставить его работать?