网络摄像头灯在我运行MediaStreamTrack.stop()之后就停止了

时间:2017-10-25 19:21:39

标签: javascript reactjs webcam getusermedia mediastream

我正在构建一个反应应用程序,需要使用以下代码访问网络摄像头:

navigator.mediaDevices.getUserMedia({ video: true, audio: false })
  .then(function(stream) {
      video.srcObject = stream;
      window.localstream = stream;
      video.play();
  })

但是,当我卸载当前组件时,我的网络摄像头仍然处于打开状态。在我的componentWillUnmount块中,我尝试了以下代码。

video.pause();
video.srcObject=null;
window.localstream.getTracks()[0].stop();
window.localstream.getVideoTracks()[0].stop();

然而,我的摄像头灯仍然亮着。当我在console.log中记录mediaStreamTrack之后,我得到:

enter image description here

如何停止我的网络摄像头?

2 个答案:

答案 0 :(得分:1)

  1. 如果您使用多台摄像机,那么您需要确保您的代码正在尝试“停止”#34;和之前打开的相机一样。

  2. 您需要确保您的代码只调用一次getUserMedia,然后getVideoTracks()[0] .stop()应该可以正常工作。

答案 1 :(得分:0)

这篇文章看起来很旧,对于那些有同样问题的人,请尝试这种方法

 let tracks = window.localstream.getTracks();
 let video = document.querySelector('#your-video-tag-id');
 tracks.forEach(function(track) {
     if (track.kind === 'video') {
         if (track.enabled) {
             track.stop();
             track.enabled = false; 
         }
     }
 });
 video.srcObject = null;