Захват изображения с камеры с помощью HTML5

Захват изображения с камеры с помощью HTML5

27 февраля 2020 HTML

С появлением HTML спецификации Media Capture стало возможным получать медиаданные с камеры пользователя так же, как если бы он загрузил на сайт какой-то файл с помощью элемента <input type="file"/>. Media Capture переопределяет поле для отправки файла если к нему добавить определённые атрибуты. Для десктопных компьютеров можно использовать метод navigator.getUserMedia() про который мы так же поговорим в этой статье.

Запись видео

<input type="file" accept="video/*" >

Если добавить атрибут capture, то сразу откроется приложение камеры, не давая выбрать файл из библиотеки:

<input type="file" accept="video/*" capture>

Можно указать режим камеры с помощью значений user — фронтальная или environment — основная:

<input type="file" accept="video/*" capture="user" >
<input type="file" accept="video/*" capture="environment" >

Мультизагрузка видео

Если указать атрибут multiple, то пользователь сможет выбрать сразу несколько видео файлов из библиотеки:

<input type="file"  accept="video/*" multiple>

Запись звука

<input type="file" accept="audio/*" >

Если вам нужен консультант по строительству

С атрибутом capture возможность выбора готовых записей из библиотеки ограничена. На данный момент не сработало в Safari:

<input type="file" accept="audio/*" capture>

Изображения и фото

<input type="file" accept="image/*" >

Фото только с камеры:

<input type="file" accept="image/*" capture>

Режим камеры user — фронтальная или environment — основная:

<input type="file" accept="video/*" capture="user" >
<input type="file" accept="video/*" capture="environment" >

Фото или видео

<input type="file"  accept="image/*,video/*" >

Фото и видео только с камеры:

<input type="file" accept="image/*,video/*" capture>

Захват фото и видео на десктопах

<input type="file" accept="video/*" capture /> отлично работает на мобильных и планшетах, но на обычном компьютере с веб-камерой у меня открывает только диалог выбора видео-файла. Как уже говорилось, чтобы захватить видео с веб-камеры можно использовать метод navigator.getUserMedia() из того же Media Streams API. Метод запрашивает у пользователя разрешение на использование до одного устройства ввода видео (например, камеры или общего экрана) и до одного устройства ввода звука (например, микрофона). Затем можно сохранить, вывести и даже наложить некоторые эффекты на полученный видео поток или сделать снимок.

В примере ниже мы добавляем тег <video> и после разрешения на доступ к веб-камере, выведем в него видео-поток:

<video autoplay id="video-player"></video>

<script>
if(navigator.webkitGetUserMedia!=null) { 
  var options = { 
    video:true, 
    audio:true 
  }; 
  
  // Запрашиваем доступ к веб-камере
  navigator.webkitGetUserMedia(options, 
    function(stream) { 
      // Получаем тег video
      var video = document.getElementById('video-player'); 
      // Включаем поток в тег video
      video.srcObject = stream; 
    }, 
    function(e) { 
      console.log("произошла ошибка"); 
    } 
  ); 
}
</script>

Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Остались вопросы по статье? Задайте их прямо сейчас!
Кнопка назад на сайте

Как сделать кнопку назад на сайте? Самый простой вариант это с помощью JavaScript-функции history. С ней можно переходить вперед, назад, обновлять страницу и делать переход на две и более страницы сразу. Кнопка назад Как ссылка: <a onclick="javascript:history.back(); return false;">Назад</a> Как Читать далее

Календарь в input для ввода даты

Чтобы при вводе даты в input выпадал удобный календарик можно воспользоваться двумя способами: стандартным полем HTML5 type="date" или JavaScript библиотекой Bootstrap Datepicker. Рассмотрим подробнее эти способы в этой статье. Календарь для input HTML5 Просто применяем у input атрибут type="date" или Читать далее

Всплывающее окно при закрытии страницы

Стоп-форма - это всплывающее окно, призывающее к действию, которое открывается через определенное время нахождения пользователя на странице или когда он пытается покинуть её. Чаще всего стоп-формы используются на Landing page. Стоп-форма по таймеру Рассмотрим пример вплывающего окна с формой на Читать далее

Коды специальных символов HTML и символы юникода (unicode)
Коды специальных символов HTML и юникода (unicode)

В статье приведена наиболее полная таблица кодов специальных символов HTML и символы юникода (unicode), которые можно использовать для своих проектов и в социальных сетях. Коды специальных символов HTML Чтобы клавиатура была удобной в использовании, она должна быть достаточно компактной. Однако Читать далее

Захват изображения с камеры с помощью HTML5

С появлением HTML спецификации Media Capture стало возможным получать медиаданные с камеры пользователя так же, как если бы он загрузил на сайт какой-то файл с помощью элемента <input type="file"/>. Media Capture переопределяет поле для отправки файла если к нему добавить Читать далее

Семантические теги HTML5, которые вы должны использовать

Введение спецификации HTML5 принесло с собой множество новых семантических тегов, которые придают ещё больше смысла тегам HTML. Это означает, что теперь веб-разработчикам нужно меньше придумывать и создавать осмысленные типы тегов для построения структуры своего сайта. Основные семантические теги HTML, такие Читать далее

Прижать футер с помощью Flexbox

Создание прилипающего футера является одной из самых распространенных задач веб-разработки, которую вы легко можете решить с помощью Flexbox. Без прилипающего футера, если у вас недостаточно содержимого на странице, футер «подпрыгивает» до середины экрана, что может полностью испортить взаимодействие с пользователем. Читать далее

Один комментарий на «Захват изображения с камеры с помощью HTML5»

  1. vova:

    а можно добавить как-то кнопку, при нажатии на которую последний кадр будет отправляться на бэк? Тобишь мне нужно сделать так, чтобы пользователь навёл камеру, так как ему надо и сделал фотографию, с которой я буду работать на бэке. Заранее спасибо

Добавить комментарий