Как проверить с помощью JavaScript, что веб-камера используется в 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);});
Вставляя код в консоль, когда страница транслирует видео, я не получил ответа.
Есть идеи? Спасибо!
1 ответ
Решение
Попробуйте вместо этого использовать enabled
а также readyState
свойства MediaStreamTrack
объект. Затем вы можете использовать функцию массива 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);
});
}
Надеюсь, это поможет!