BrowserCaptureMediaStreamTrack: cropTo() 方法

可用性有限

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

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

BrowserCaptureMediaStreamTrack 接口的 cropTo() 方法将自捕获流裁剪到指定 DOM 元素渲染的区域。

语法

js
cropTo(cropTarget)

参数

cropTarget

一个 CropTarget 实例,代表流应被裁剪到的元素渲染区域,或者 null/undefined,在这种情况下,将从轨道中移除先前设置的任何裁剪。

返回值

一个 Promise,解析为 undefined

Promise 会在以下情况下被拒绝:

  • 轨道 kind 不是 "video",或者其 readyState 不是 "live"
  • 裁剪目标元素不再存在。
  • 正在裁剪的轨道不是从用户屏幕捕获的轨道。
  • cropTarget 不是 CropTarget 实例、nullundefined
  • cropTarget 是在与当前捕获的标签页不同的标签页中创建的。

注意: 在 Chromium 中,如果一个轨道有副本,cropTo() 将被拒绝(请参阅 Chrome issue 41482026)。

示例

基本裁剪示例

js
// Options for getDisplayMedia()
const displayMediaOptions = {
  preferCurrentTab: true,
};

// Create crop target from DOM element
const demoElem = document.querySelector("#demo");
const cropTarget = await CropTarget.fromElement(demoElem);

// Capture video stream from user's webcam and isolate video track
const stream =
  await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
const [track] = stream.getVideoTracks();

// Crop video track
await track.cropTo(cropTarget);

// Broadcast cropped stream in <video> element
videoElem.srcObject = stream;

有关上下文中的示例代码,请参阅 使用元素捕获和区域捕获 API

停止裁剪

您可以通过在一个先前已裁剪的轨道上调用 cropTo() 方法,并将其参数设置为 null 来停止裁剪。

js
// Stop cropping
await track.cropTo(null);

规范

规范
区域捕获
# dom-browsercapturemediastreamtrack-cropto

浏览器兼容性

另见