如何使用 JavaScript 检查 Chrome 中是否正在使用网络摄像头
How to check with JavaScript that webcam is being used in Chrome
如果在 Chrome 中使用网络摄像头,该页面的选项卡上会出现一个红点。如果其他页面尝试访问网络摄像头,则视频会变黑。我的问题是,它是否能够通过 JavaScript 检查是否正在使用网络摄像头?怎么样?
通过使用 navigator.getUserMedia,我尝试了以下代码:
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia || navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
navigator.getUserMedia({ audio: true, video: true }, function (stream) {
var mediaStreamTrack = stream.getVideoTracks()[0];
if (typeof mediaStreamTrack != "undefined") {
mediaStreamTrack.onended = function () {alert('Your webcam is busy!')}
} else errorMessage('Permission denied!');
}, function (e) {alert("Error: " + e.name);});
在页面流式传输视频时将代码粘贴到控制台,我没有得到任何响应。
有什么想法吗?谢谢!
尝试使用 MediaStreamTrack
object 的 enabled
和 readyState
属性。然后,您可以使用 JavaScript 数组函数(例如 some()
遍历曲目并检查是否有任何 enabled
设置为 true 并且 && readyState
等于字符串 'live" :
navigator.getUserMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
if (navigator.getUserMedia) {
navigator.getUserMedia({
audio: true,
video: true
},
function(stream) {
// returns true if any tracks have active state of true
var result = stream.getVideoTracks().some(function(track) {
return track.enabled && track.readyState === 'live';
});
if (result) {
alert('Your webcam is busy!');
} else {
alert('Not busy');
}
},
function(e) {
alert("Error: " + e.name);
});
}
希望对您有所帮助!
如果在 Chrome 中使用网络摄像头,该页面的选项卡上会出现一个红点。如果其他页面尝试访问网络摄像头,则视频会变黑。我的问题是,它是否能够通过 JavaScript 检查是否正在使用网络摄像头?怎么样?
通过使用 navigator.getUserMedia,我尝试了以下代码:
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia || navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
navigator.getUserMedia({ audio: true, video: true }, function (stream) {
var mediaStreamTrack = stream.getVideoTracks()[0];
if (typeof mediaStreamTrack != "undefined") {
mediaStreamTrack.onended = function () {alert('Your webcam is busy!')}
} else errorMessage('Permission denied!');
}, function (e) {alert("Error: " + e.name);});
在页面流式传输视频时将代码粘贴到控制台,我没有得到任何响应。
有什么想法吗?谢谢!
尝试使用 MediaStreamTrack
object 的 enabled
和 readyState
属性。然后,您可以使用 JavaScript 数组函数(例如 some()
遍历曲目并检查是否有任何 enabled
设置为 true 并且 && readyState
等于字符串 'live" :
navigator.getUserMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
if (navigator.getUserMedia) {
navigator.getUserMedia({
audio: true,
video: true
},
function(stream) {
// returns true if any tracks have active state of true
var result = stream.getVideoTracks().some(function(track) {
return track.enabled && track.readyState === 'live';
});
if (result) {
alert('Your webcam is busy!');
} else {
alert('Not busy');
}
},
function(e) {
alert("Error: " + e.name);
});
}
希望对您有所帮助!