CanvasCaptureMediaStreamTrack: requestFrame() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

CanvasCaptureMediaStreamTrack 接口的 requestFrame() 方法会请求从 Canvas 捕获一帧并将其发送到流。

需要精确控制渲染和帧捕获时序的应用程序可以使用 requestFrame() 来直接指定捕获帧的时间。

为了防止自动捕获帧,即帧仅在调用 requestFrame() 时被捕获,请在创建流时为 captureStream() 方法指定 0 值。

语法

js
requestFrame()

参数

无。

返回值

无(undefined)。

用法说明

目前规范中有一个问题指出,此时,如果 Canvas 并非源自干净(origin-clean),则不会抛出任何异常。这将来可能会改变,因此最好提前规划并留意可能的异常,例如 SecurityError(尽管规范中未提及可能抛出的具体错误,但这是一种可能的候选)。

示例

js
// Find the canvas element to capture
const canvasElt = document.querySelector("canvas");

// Get the stream
const stream = canvasElt.captureStream(25); // 25 FPS

// Send the current state of the canvas as a frame to the stream
stream.getVideoTracks()[0].requestFrame();

规范

规范
从 DOM 元素捕获媒体
# dom-canvascapturemediastreamtrack-requestframe

浏览器兼容性

另见