MediaStream Image Capture API

MediaStream Image Capture API 是一个用于从摄影设备捕获图像或视频的 API。除了捕获数据之外,它还允许您检索有关设备功能的信息,例如图像大小、红眼消除以及是否有闪光灯以及它们当前的设置。反之,该 API 允许在设备允许的约束范围内配置这些功能。

MediaStream 图像捕获的概念和用法

检索图像或视频流的过程如下所述。示例代码改编自 Chrome 的图像捕获示例

首先,通过调用 MediaDevices.getUserMedia() 来获取设备引用。下面的示例表示提供任何可用的视频设备,但 getUserMedia() 方法允许请求更具体的功能。此方法返回一个 Promise,该 Promise 会解析为一个 MediaStream 对象。

js
navigator.mediaDevices.getUserMedia({ video: true }).then((mediaStream) => {
  // Do something with the stream.
});

接下来,分离媒体流的可视部分。通过调用 MediaStream.getVideoTracks() 来实现。这将返回一个 MediaStreamTrack 对象数组。下面的代码假定 MediaStreamTrack 数组中的第一个项是要使用的项。您可以使用 MediaStreamTrack 对象的属性来选择您需要的那个。

js
const track = mediaStream.getVideoTracks()[0];

此时,您可能希望在捕获图像之前配置设备功能。您可以通过在执行其他任何操作之前,在轨道对象上调用 applyConstraints() 来实现此目的。

js
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 包含几种类型的轨道并提供了多种检索它们的方法,但如果 MediaStreamTrack.kind 不是 "video",则 ImageCapture 构造函数将抛出类型为 NotSupportedErrorDOMException

js
let imageCapture = new ImageCapture(track);

接口

ImageCapture

通过有效的 MediaStreamTrack 引用从摄影设备捕获图像的接口。

规范

规范
MediaStream 图像捕获
# imagecaptureapi

浏览器兼容性

另见