MediaStreamTrack: applyConstraints() 方法

Baseline 广泛可用 *

此功能已成熟,可跨多种设备和浏览器版本使用。自 2017 年 9 月以来,它已在浏览器中提供。

* 此特性的某些部分可能存在不同级别的支持。

MediaStreamTrack 接口的 applyConstraints() 方法将一组约束应用于轨道;这些约束允许网站或应用为轨道的(可约束)属性(例如帧率、尺寸、回声消除等)建立理想值和可接受的值范围。

约束可以用来确保媒体满足你偏好的某些指南。例如,你可能偏好高分辨率视频,但要求帧率稍低一些,以帮助保持数据速率足够低,避免网络负担过重。约束还可以指定理想和/或可接受的尺寸或尺寸范围。有关如何应用你偏好的约束的更多信息,请参阅 功能、约束和设置 中的 应用约束

语法

js
applyConstraints()
applyConstraints(constraints)

参数

constraints 可选

一个 MediaTrackConstraints 对象,列出了要应用于轨道可约束属性的约束;任何现有约束都将被指定的​​新值替换,并且任何未包含的可约束属性都将恢复到其默认约束。如果省略此参数,则会清除所有当前设置的自定义约束。此对象代表了 Promise 解析必须适用的基本约束集。该对象可能包含一个 `advanced` 属性,其中包含其他 MediaTrackConstraints 对象的数组,这些对象被视为严格要求。

返回值

一个 Promise,当约束成功应用时解析。如果约束无法应用,则 promise 会因一个 OverconstrainedError(该错误是一个 DOMException,其名称为 OverconstrainedError,并带有附加参数)而被拒绝,以表明约束无法满足。当尝试配置轨道时,如果指定的约束过于严格而无法找到匹配项,则可能发生这种情况。

示例

以下显示了如何指定一组基本和高级约束。它指定页面或 Web 应用需要宽度在 640 到 1280 之间,高度在 480 到 720 之间,其中每对数字的后一个数字是首选。`advanced` 属性进一步指定,首选图像尺寸为 1920x1280,或者 纵横比 为 1.333(如果不可用)。请注意,这些约束也说明了规范中所说的“回退策略”。

js
const constraints = {
  width: { min: 640, ideal: 1280 },
  height: { min: 480, ideal: 720 },
  advanced: [{ width: 1920, height: 1280 }, { aspectRatio: 1.333 }],
};

navigator.mediaDevices.getUserMedia({ video: true }).then((mediaStream) => {
  const track = mediaStream.getVideoTracks()[0];
  track
    .applyConstraints(constraints)
    .then(() => {
      // Do something with the track such as using the Image Capture API.
    })
    .catch((e) => {
      // The constraints could not be satisfied by the available devices.
    });
});

规范

规范
媒体捕获和流
# dom-mediastreamtrack-applyconstraints

浏览器兼容性

另见