我使用以下JavaScript代码打开了一个网络摄像头:

const stream = await navigator.mediaDevices.getUserMedia({ /* ... */ });

是否有任何JavaScript代码停止或关闭网络摄像头?


当前回答

当通过http连接时,在流上使用.stop()在chrome上工作。它在使用ssl (https)时不起作用。

其他回答

您可以直接使用成功处理程序中返回给getUserMedia的流对象来结束流。如。

localMediaStream.stop()

视频。Src =""或null只会从视频标签中删除源。它不会释放硬件。

试试下面的方法:

var mediaStream = null;
    navigator.getUserMedia(
        {
            audio: true,
            video: true
        },
        function (stream) {
            mediaStream = stream;
            mediaStream.stop = function () {
                this.getAudioTracks().forEach(function (track) {
                    track.stop();
                });
                this.getVideoTracks().forEach(function (track) { //in case... :)
                    track.stop();
                });
            };
            /*
             * Rest of your code.....
             * */
        });

    /*
    * somewhere insdie your code you call
    * */
    mediaStream.stop();

启动和停止网络摄像头,(更新2020 React es6)

开启Web摄像头

stopWebCamera =()=>

       //Start Web Came
      if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
        //use WebCam
        navigator.mediaDevices.getUserMedia({ video: true }).then(stream => {
          this.localStream = stream;
          this.video.srcObject = stream;
          this.video.play();
        });
      }
 }

停止网络摄像头或视频播放一般

stopVideo =()=>
{
        this.video.pause();
        this.video.src = "";
        this.video.srcObject = null;

         // As per new API stop all streams
        if (this.localStream)
          this.localStream.getTracks().forEach(track => track.stop());
}

停止网络摄像头功能,即使视频流:

  this.video.src = this.state.videoToTest;
  this.video.play();

使用不同的浏览器启动网络摄像头视频

对于Opera 12

window.navigator.getUserMedia(param, function(stream) {
                            video.src =window.URL.createObjectURL(stream);
                        }, videoError );

Firefox夜间18.0

window.navigator.mozGetUserMedia(param, function(stream) {
                            video.mozSrcObject = stream;
                        }, videoError );

针对Chrome 22

window.navigator.webkitGetUserMedia(param, function(stream) {
                            video.src =window.webkitURL.createObjectURL(stream);
                        },  videoError );

使用不同浏览器停止摄像头视频

对于Opera 12

video.pause();
video.src=null;

Firefox夜间18.0

video.pause();
video.mozSrcObject=null;

针对Chrome 22

video.pause();
video.src="";

有了这个,网络摄像头的灯每次都要熄灭……

你需要停止所有的轨迹(来自摄像头,麦克风):

localStream.getTracks().forEach(track => track.stop());