在没有 canvas/display 的情况下拍摄隐形 WebRTC/video 张照片

Taking invisible WebRTC/video photos without canvas/display

我从 MDN 上读到 Taking still photos 描述了如何从网络摄像头捕捉照片(使用视频元素和 mediaDevices.getUserMedia)并使用 canvas.

但是我 不需要 需要(并且不想)向用户显示拍摄的图像,因此我也不想使用 canvas 作为我想说,首先绘制 canvas 只是为了获取图像数据(如 ImageData 或 DataUri)可能对性能不利。

那么有没有不用canvas就可以得到图像数据的方法呢?

使用 canvas 完全没问题,性能也很好。只是不要将 canvas 附加到文档,它不会显示。我认为您对性能的担忧是没有根据的。

从流中获取数据的唯一其他方法是 MediaRecorder,但它会以给定的帧速率生成视频,而不是您想要的,而且涉及更多。

有人在谈论 imageCapture API, but it's not implemented in any browser yet, except behind a flag。它将提供一种 .takePhoto() 方法,该方法还可以访问可用的全分辨率相机(即手机)。