VideoFrame: copyTo() 方法
注意:此功能在 专用 Web Workers 中可用。
VideoFrame 接口的 copyTo() 方法会将 VideoFrame 的内容复制到一个 ArrayBuffer 中。
语法
js
copyTo(destination)
copyTo(destination, options)
参数
destination-
用于复制到的
ArrayBuffer、TypedArray或DataView。 options可选-
一个包含以下内容的 *)
rect可选-
要从
VideoFrame中复制的像素矩形。如果未指定,将使用visibleRect。其格式为一个字典对象,包含:x:x 坐标。y:y 坐标。width:帧的宽度。height:帧的高度。
layout可选-
一个列表,包含
VideoFrame中每个平面的以下值:offset-
一个整数,表示给定平面开始的偏移量(以字节为单位)。
stride(步幅)-
一个整数,表示平面中每一行使用的字节数(包括填充)。平面可能不会重叠。如果未指定
layout,则平面将紧密打包。
format可选-
destination中像素数据的像素格式。可以设置为"RGBA"、"RGBX"、"BGRA"、"BGRX"。如果未指定,将使用format。 colorSpace可选-
指定
destination中像素数据的颜色空间。可以设置为 sRGB 颜色空间的"srgb"或 display-p3 颜色空间的"display-p3"。仅适用于 RGB 像素格式。如果未指定,将使用"srgb"。
返回值
一个 Promise,当复制完成后,该 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 |
浏览器兼容性
加载中…