我正在构建一个反应应用程序,需要使用以下代码访问网络摄像头:
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之后,我得到:
如何停止我的网络摄像头?
答案 0 :(得分:1)
如果您使用多台摄像机,那么您需要确保您的代码正在尝试“停止”#34;和之前打开的相机一样。
您需要确保您的代码只调用一次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;