我使用以下JavaScript代码打开了一个网络摄像头:
const stream = await navigator.mediaDevices.getUserMedia({ /* ... */ });
是否有任何JavaScript代码停止或关闭网络摄像头?
我使用以下JavaScript代码打开了一个网络摄像头:
const stream = await navigator.mediaDevices.getUserMedia({ /* ... */ });
是否有任何JavaScript代码停止或关闭网络摄像头?
当前回答
请检查这个:https://jsfiddle.net/wazb1jks/3/
导航器。getUserMedia(mediaConstraints,函数(流){ 窗口。streamReference =流; }, onMediaError);
停止记录
函数stopStream() { if (!window.streamReference)返回; window.streamReference.getAudioTracks () .forEach(函数(跟踪){ track.stop (); }); window.streamReference.getVideoTracks () .forEach(函数(跟踪){ track.stop (); }); 窗口。streamReference = null; }
其他回答
假设我们有流式视频标签,id是video - <video id="video"></video>,那么我们应该有以下代码-
var videoEl = document.getElementById('video');
// now get the steam
stream = videoEl.srcObject;
// now get all tracks
tracks = stream.getTracks();
// now close each track by having forEach loop
tracks.forEach(function(track) {
// stopping every track
track.stop();
});
// assign null to srcObject of video
videoEl.srcObject = null;
使用不同的浏览器启动网络摄像头视频
对于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="";
有了这个,网络摄像头的灯每次都要熄灭……
有溪流形式成功的参考吗
var streamRef;
var handleVideo = function (stream) {
streamRef = stream;
}
//this will stop video and audio both track
streamRef.getTracks().map(function (val) {
val.stop();
});
当通过http连接时,在流上使用.stop()在chrome上工作。它在使用ssl (https)时不起作用。
使用下列函数:
// stop both mic and camera
function stopBothVideoAndAudio(stream) {
stream.getTracks().forEach(function(track) {
if (track.readyState == 'live') {
track.stop();
}
});
}
// stop only camera
function stopVideoOnly(stream) {
stream.getTracks().forEach(function(track) {
if (track.readyState == 'live' && track.kind === 'video') {
track.stop();
}
});
}
// stop only mic
function stopAudioOnly(stream) {
stream.getTracks().forEach(function(track) {
if (track.readyState == 'live' && track.kind === 'audio') {
track.stop();
}
});
}