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 |
浏览器兼容性
加载中…