Пытаюсь переключить камеру - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь переключить между передней и задней камерой на устройстве с передней и задней камерой. Однако это не работает. Я также пробовал использовать 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 вообще не показывает никаких опций. Что не так, что я здесь делаю? Или есть какой-нибудь более подходящий способ заставить его работать?

...