2017-02-18 7 views
0

Я нашел код онлайн для доступа к веб-камере. Он обращается к веб-камере, но не показывает, что он видит. Я знаю, что это нормально, потому что в документе нет html, но мне было интересно, как я могу отобразить результат. Код, который я нашел, это:Как отобразить getUserMedia()

var constraints = { audio: true, video: { width: 1280, height: 720 } }; 

navigator.mediaDevices.getUserMedia(constraints) 
.then(function(mediaStream) { 
    var video = document.querySelector('video'); 
    video.srcObject = mediaStream; 
    video.onloadedmetadata = function(e) { 
    video.play(); 
    }; 
}) 
.catch(function(err) { console.log(err.name + ": " + err.message); }); 

Благодарю вас за помощь.

ответ

1

Возможно, вы потеряли в своем HTML тег video, используемый для «сброса» потока веб-камеры. Так как не рекомендуется ссылаться на тег по имени его тега (video), вы должны использовать идентификатор (например, #webcam). Просто создайте тег видео с этим идентификатором:

<video id="webcam"></video> 

Обновить код, в document.querySelector, чтобы ссылаться на ваш новый тег:

var constraints = { audio: true, video: { width: 1280, height: 720 } }; 

navigator.mediaDevices.getUserMedia(constraints) 
.then(function(mediaStream) { 
    var video = document.querySelector('#webcam'); // <- Here 
    video.srcObject = mediaStream; 
    video.onloadedmetadata = function(e) { 
    video.play(); 
    }; 
}) 
.catch(function(err) { console.log(err.name + ": " + err.message); }); 

Вот рабочий пример на JSFiddle.

Кроме того, не забудьте разрешить веб-браузеру использовать веб-камеру и микрофон.

+0

Спасибо тонну. Я тестировал его, и он работает. Я буду использовать код для мобильных устройств (Android и ios). Я не знаю, изменит ли это что-нибудь. В любом случае, он работал над jsFiddle. Еще раз спасибо! О да, я почти забыл. Для моего приложения мне нужно будет снимать видео и фотографии. Если бы вы могли показать мне, как сделать снимок и видео и сохранить его в файле, было бы здорово. –

+0

Я пробовал его на устройстве Android и не просил разрешения. Поэтому он не работает (я просто предполагаю, что, поскольку он не просил разрешения, он не работает, но я не знаю точно). –

+0

@ TheodoreTremblot Для вашего первого комментария, поскольку это другой вопрос, вам, вероятно, следует найти некоторую информацию в Интернете; если вы застряли с чем-то, создайте еще один вопрос StackOverflow, поскольку он напрямую не связан с этим. Теперь, в ответ на ваш второй комментарий, я попробовал JSFiddle на Android-устройстве (4.4.4) с Chrome и Firefox. Не могли бы вы предоставить дополнительную информацию? Для получения дополнительной информации о совместимости проверьте [эту страницу] (http://caniuse.com/#feat=stream). – Wikiti