HTMLCanvasElement: captureStream() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

HTMLCanvasElement 接口的 captureStream() 方法会返回一个 MediaStream 对象,其中包含一个 CanvasCaptureMediaStreamTrack,用于实时捕获 canvas 的内容。

语法

js
captureStream()
captureStream(frameRate)

参数

frameRate 可选

一个双精度浮点数值,用于指示每个帧的捕获速率。如果未设置,则每次 canvas 更改时都会捕获一个新帧;如果设置为 0,则不会自动捕获帧;相反,只有当返回的轨道的 requestFrame() 方法被调用时,才会捕获帧。

返回值

指向一个 MediaStream 对象的引用,该对象包含一个 CanvasCaptureMediaStreamTrack

异常

NotSupportedError DOMException

如果 frameRate 的值为负数,则会抛出此错误。

SecurityError DOMException

Canvas 的位图不是 origin clean;至少部分内容已从加载文档的站点以外的站点加载,或可能已从其他站点加载。

示例

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

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

// Do things to the stream
// E.g. Send it to another computer using an RTCPeerConnection
//      pc is an RTCPeerConnection created elsewhere
stream.getTracks().forEach((track) => pc.addTrack(track, stream));

规范

规范
从 DOM 元素捕获媒体
# dom-htmlcanvaselement-capturestream

浏览器兼容性

另见