getUserMedia() не поддерживается в Chrome
Я пытаюсь получить доступ к своей веб-камере, используя getUserMedia(), используя свой собственный веб-сайт, который запускается с использованием моего собственного IP-адреса.
это работало хорошо, пока я не попробовал мой веб-сайт снова. Я пробовал другой демонстрационный сайт, и ошибка была вызвана getUserMedia не поддерживается.
Версия Chrome v47.0.2526.80m 32bit
Я могу получить доступ к веб-камере, если я ввожу localhost вместо ipadress. это также работает в Firefox.
2 ответа
Chrome требует безопасного происхождения (HTTPS) для getUserMedia.
Начиная с Chrome 47, запросы getUserMedia() разрешены только из безопасного источника: HTTPS или localhost.
https://developers.google.com/web/updates/2015/10/chrome-47-webrtc?hl=en
Я не уверен, что это решит вашу проблему. Однако это может быть полезно для тех, кто изо всех сил пытается получить getUserMedia() в рабочем состоянии.
Я наткнулся на ссылку среднего размера, которая помогла мне решить эту проблему.
Перейдите по ссылке: chrome: // flags / # unsafely-Treat-insecure-origin-as-secure
Включите опцию.
Также ниже будет установлен флажок. Используйте это, чтобы предоставить ссылку на ваш HTTP-сервер.
Обратитесь к этому изображению для большей ясности
Также укажите номер порта. (В моем случае это 8000)
Chrome наконец-то реализовал новый navigator.mediaDevices.getUserMedia()
метод, но они добавили безопасность, которая будет предотвращать звонки с незащищенного адреса (не https или не локальные серверы)
Вы назовете это так:
var video = document.querySelector('video');
navigator.mediaDevices.getUserMedia({video:true}).then(function(mediaStream){
window.stream = mediaStream;
video.src = URL.createObjectURL(mediaStream);
video.play();
});
Или вы можете использовать официальную библиотеку webRTC polyfill adpater.js.
var constraints = { video: true, audio: true };
navigator.mediaDevices.getUserMedia(constraints)
.then(stream => video.srcObject = stream)
.catch(e => console.error(e));