API захвата изображений MediaStream
Экспериментально: Это экспериментальная технология
Перед использованием в производстве тщательно проверьте таблицу совместимости браузеров.
API захвата изображений MediaStream — это API для захвата изображений или видео с фотоустройства. Помимо захвата данных, он также позволяет получать информацию о возможностях устройства, таких как размер изображения, уменьшение эффекта красных глаз, наличие и текущие настройки вспышки. Наоборот, API позволяет настраивать возможности в рамках ограничений, накладываемых устройством.
Концепции и использование захвата изображений MediaStream
Процесс получения потока изображения или видео происходит следующим образом. Приведенный пример кода адаптирован из примеров захвата изображений Chrome.
Сначала получите ссылку на устройство, вызвав MediaDevices.getUserMedia(). В примере ниже сказано, что нужно взять любое доступное видеоустройство, хотя метод getUserMedia() позволяет запросить более конкретные возможности. Этот метод возвращает Promise, который разрешается объектом MediaStream.
navigator.mediaDevices.getUserMedia({ video: true }).then((mediaStream) => {
// Do something with the stream.
});
Далее, изолируйте визуальную часть потока медиа, вызвав MediaStream.getVideoTracks(). Это возвращает массив объектов MediaStreamTrack. В приведенном ниже коде предполагается, что первый элемент в массиве MediaStreamTrack — тот, который нужно использовать. Вы можете использовать свойства объектов MediaStreamTrack для выбора нужного.
const track = mediaStream.getVideoTracks()[0];
На этом этапе вы, возможно, захотите настроить возможности устройства перед захватом изображения. Сделать это можно, вызвав applyConstraints() для объекта трека до выполнения любых других действий.
let zoom = document.querySelector("#zoom");
const capabilities = track.getCapabilities();
// Check whether zoom is supported or not.
if (!capabilities.zoom) {
return;
}
track.applyConstraints({ advanced: [{ zoom: zoom.value }] });
Наконец, передайте объект MediaStreamTrack в конструктор ImageCapture(). Хотя MediaStream содержит несколько типов треков и предоставляет несколько методов для их получения, конструктор ImageCapture выбросит исключение DOMException типа NotSupportedError , если MediaStreamTrack.kind не равен "video".
let imageCapture = new ImageCapture(track);
Интерфейсы
-
ImageCaptureЭкспериментально -
Интерфейс для захвата изображений с фотоустройства, на которое ссылается допустимый объект
MediaStreamTrack.
Спецификации
| Спецификация |
|---|
| Захват изображения MediaStream # imagecaptureapi |
Совместимость браузеров
| Десктоп | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
ImageCapture |
59 | 79 | 35 | 46 | 17.4 | 59 | Нет | 43 | 17.4 | 7.0 | 59 |
MediaStream_Image_Capture_API |
59 | 79 | 35 | 46 | 17.4 | 59 | Нет | 43 | 17.4 | 7.0 | 59 |
getPhotoCapabilities |
59 | 79 | Нет | 46 | 17.4 | 59 | Нет | 43 | 17.4 | 7.0 | 59 |
getPhotoSettings |
61 | 79 | Нет | 46 | 17.4 | 61 | Нет | 43 | 17.4 | 8.0 | 61 |
grabFrame |
59 | 79 | Нет | 46 | Нет | 59 | Нет | 43 | Нет | 7.0 | 59 |
takePhoto |
6059–60photoSettings параметр не поддерживается. |
79 | 35 | 4746–47photoSettings параметр не поддерживается. |
17.4 | 6059–60photoSettings параметр не поддерживается. |
Нет | 4443–44photoSettings параметр не поддерживается. |
17.4 | 8.07.0–8.0photoSettings параметр не поддерживается. |
6059–60photoSettings параметр не поддерживается. |
track |
59 | 79 | 35 | 46 | 17.4 | 59 | Нет | 43 | 17.4 | 7.0 | 59 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MediaStream_Image_Capture_API