Bezdepbonusu7Программирование: статьи и ответы

Вопрос

TypeError: 'getUserMedia' вызывается для объекта, который не реализует интерфейс MediaDevices

Автор вопроса: AlesSvetinaОтветов: 1

Я пытаюсь внедрить веб-камеру на веб-сайт, используя тег видео. Он работает в Chrome, но FireFox и IE выдают ошибки в консоли. У кого-нибудь есть идеи, почему? Благодарю вас!

Код:

navigator.getMedia =    navigator.getUserMedia ||
                                navigator.webkitGetUserMedia ||
                                navigator.mediaDevices.getUserMedia ||
                                navigator.msGetUserMedia ||
                                OTPlugin.getUserMedia;

Ошибка Firefox: TypeError: 'getUserMedia' вызывается для объекта, который не реализует интерфейс MediaDevices.

Ошибка IE: невозможно получить свойство getUserMedia неопределенной или нулевой ссылки

videowebcamgetusermedia

Ответы

Ответ 1 · рейтинг 12 · jib

Вы забыли navigator.mozGetUserMedia для Firefox. В IE его нет (хотя в MS Edge есть).

Кроме того, удалите navigator.mediaDevices.getUserMedia из этого списка, так как он работает по-другому.

Мой совет: не путайтесь в префиксах и попробуйте адаптер. .js, официальный полифил WebRTC. Затем используйте navigator.mediaDevices.getUserMedia исключительно, так как все остальное устарело.

Пример (используйте https://jsfiddle.net/srn9db4h/ в Chrome):

navigator.mediaDevices.getUserMedia({ video: true, audio: true })
  .then(stream => video.srcObject = stream)
  .catch(e => console.log(e.name + ": "+ e.message));
<video id="video" width="160" height="120" autoplay></video><br>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы