VideoFrame: copyTo() 方法
注意: 此功能在 专用 Web 工作者 中可用。
copyTo()
是 VideoFrame
接口的方法,它将 VideoFrame
的内容复制到 ArrayBuffer
中。
语法
js
copyTo(destination)
copyTo(destination, options)
参数
destination
-
一个
ArrayBuffer
、TypedArray
或DataView
,将复制到其中。 options
可选-
包含以下内容的对象
rect
可选-
要从
VideoFrame
中复制的像素矩形。如果未指定,将使用visibleRect
。这采用一个字典对象的格式,包含以下内容:x
: X 坐标。y
: Y 坐标。width
: 帧的宽度。height
: 帧的高度。
layout
可选-
一个列表,包含
VideoFrame
中每个平面的以下值: format
可选-
destination
中像素数据的像素格式。可以设置为"RGBA"
、"RGBX"
、"BGRA"
、"BGRX"
。如果未指定,将使用format
。 colorSpace
可选-
指定
destination
中像素数据的颜色空间。可以设置为"srgb"
(用于 sRGB 颜色空间)或"display-p3"
(用于 display-p3 颜色空间)。仅适用于 RGB 像素格式。如果未指定,将使用"srgb
。
返回值
一个 Promise
,当复制完成时解析为复制布局。
示例
以下示例复制 videoFrame
的全部内容。
js
let buffer = new Uint8Array(videoFrame.allocationSize());
let layout = await videoFrame.copyTo(buffer);
以下示例将 videoFrame
的一部分转换为 RGB 格式。
js
const videoRect = {
x: 100,
y: 100,
width: 80,
height: 60,
};
const options = {
rect: videoRect,
format: "RGBX",
colorSpace: "display-p3",
};
const size = videoFrame.allocationSize(options);
const buffer = new ArrayBuffer(size);
const layout = await videoFrame.copyTo(buffer, options);
规范
规范 |
---|
WebCodecs # dom-videoframe-copyto |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。