Можно ли выяснить, имеет ли пользователь веб-камеру или не использует только JavaScript? Я не хочу использовать для этого плагин.
Проверьте, есть ли у пользователя веб-камера или нет только JavaScript?
Ответ 1
Вы можете использовать новый API HTML5, чтобы проверить, дают ли они вам разрешение на использование веб-камеры. В конце концов, если они откажут в разрешении, они могут также не иметь веб-камеры с точки зрения кода.
EDIT:
navigator.getMedia = ( navigator.getUserMedia || // use the proper vendor prefix
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
navigator.getMedia({video: true}, function() {
// webcam is available
}, function() {
// webcam is not available
});
Ответ 2
Вы можете проверить, имеет ли пользователь веб-камеру, используя этот плагин: http://www.xarg.org/project/jquery-webcam-plugin/
if(webcam.getCameraList().length == 0){
alert('You don\'t have a web camera');
}
Взято отсюда: Как проверить, есть ли у пользователя веб-камера или нет?
Изменить. Я вижу, что вы обновили свой вопрос, чтобы сказать, что вы не хотите использовать плагин. В этом случае вы можете попробовать использовать API getUserMedia
:
function success(stream){
// The success function receives an argument which points to the webcam stream
document.getElementById('myVideo').src = stream;
}
function error(){
alert("No webcam for you, matey!");
}
if (navigator.getUserMedia) {
navigator.getUserMedia({video:true, audio:false}, success, error);
} else {
error();
}
Источник: http://www.iandevlin.com/blog/2012/06/html5/filtering-a-webcam-using-getusermedia-and-html5-canvas
Ответ 3
НЕТ способа читать текущие настройки браузера. единственное, что мы можем сделать, это попытаться получить доступ к веб-камере/микрофону и посмотреть, можем ли мы получить доступ к этому устройству, например...
navigator.getMedia({video: true}, function() {
// webcam is available
}, function() {
// webcam is not available
});
НО **** Важно отметить, что если вы будете следовать этому подходу, тогда имейте в виду, что....
Также обратите внимание, что вам нужно использовать HTTPS для использования веб-камеры/микрофона, и он предложит вам всплывающее окно с разрешением браузера с кнопками разрешать и блокировать ТОЛЬКО ОДИН РАЗ, вы будете НЕ видеть это всплывающее окно разрешения снова, как HTTPS сохранить разрешение.
Единственный способ получить это всплывающее окно разрешения - это:
- Очистите кеш и
- Reset настройки браузера
- Откройте новый экземпляр браузера.
FYI... Вы не можете манипулировать настройками браузера с помощью JavaScript Так что не делайте это так, если у вас не будет времени убить
Ответ 4
Находясь здесь и вдохновленный другими ответами, в рамках реализации, над которой я работаю, я использую следующую функцию, чтобы вернуть логическую проверку для активного потока.
Проект немного старый, отсюда и jQuery и ES5, хотя надеюсь, что это кому-нибудь пригодится:
function() {
var deferred = $.Deferred();
navigator.mediaDevices.getUserMedia(VIDEO_CONSTRAINTS)
.then(function(stream) { deferred.resolve(stream.active); })
.catch(function() { deferred.resolve(false) })
return deferred.promise()
}
Это может быть использовано следующим образом:
self.checkStreamActive()
.then(function(activeStream) {
if(activeStream) {
// do something
} else {
// do something else
}
})