MediaTrackConstraints

MediaTrackConstraints 字典用于描述一组媒体功能以及每个功能可以采用的值。

约束字典被传递给 MediaStreamTrack 接口的 applyConstraints() 方法,以允许脚本为轨道建立一组精确(必需)值或范围和/或首选值或值范围。

通过调用 getConstraints() 可以检索最近请求的自定义约束集。

此类型的对象也可以传递给:

  • MediaDevices.getUserMedia() 方法,用于指定从相机或麦克风等硬件请求的媒体流的约束。

  • MediaDevices.getDisplayMedia() 方法,用于指定从屏幕或窗口捕获请求的媒体流的约束。

约束

以下类型用于指定属性的约束。它们允许您指定一个或多个 exact 值(其中一个必须是参数的值),或一组 ideal 值(如果可能,应使用这些值)。您还可以指定一个单一值(或一个值数组),用户代理将尽力匹配该值,一旦所有更严格的约束都已应用。

要了解有关约束如何工作的更多信息,请参见功能、约束和设置

注意:MediaDevices.getDisplayMedia() 调用中使用的约束中不允许使用 minexact 值——它们会产生 TypeError——但它们允许在 MediaStreamTrack.applyConstraints() 调用中使用的约束中。

ConstrainBoolean

ConstrainBoolean 约束类型用于指定值为布尔值的属性的约束。其值可以设置为布尔值(truefalse)或包含以下属性的对象:

exact

一个布尔值,必须是属性的值。如果属性无法设置为此值,则匹配将失败。

ideal

一个布尔值,指定属性的理想值。如果可能,将使用此值,但如果不可能,用户代理将使用最接近的匹配项。

ConstrainBooleanOrDOMString

ConstrainBooleanOrDOMString 约束类型用于指定值为布尔值或字符串值的属性的约束。它可以采用 ConstrainBooleanConstrainDOMString 部分中指定的值。

ConstrainDouble

ConstrainDouble 约束类型用于指定值为双精度浮点数的属性的约束。其值可以设置为数字或包含以下属性的对象:

max

一个十进制数字,指定其描述的属性的最大允许值。如果值不能保持等于或小于此值,则匹配将失败。

min

一个十进制数字,指定其描述的属性的最小允许值。如果值不能保持等于或大于此值,则匹配将失败。

exact

一个十进制数字,指定属性必须具有的特定、必需值才能被认为是可接受的。

ideal

一个十进制数字,指定属性的理想值。如果可能,将使用此值,但如果不可能,用户代理将使用最接近的匹配项。

ConstrainDOMString

ConstrainDOMString 约束类型用于指定值为字符串的属性的约束。其值可以设置为字符串、字符串数组或包含以下属性的对象:

exact

一个字符串或字符串数组,其中一个必须是属性的值。如果属性无法设置为列出的值之一,则匹配将失败。

ideal

一个字符串或字符串数组,指定属性的理想值。如果可能,将使用列出的值之一,但如果不可能,用户代理将使用最接近的匹配项。

ConstrainULong

ConstrainULong 约束类型用于指定值为整数的属性的约束。其值可以设置为数字或包含以下属性的对象:

max

一个整数,指定其描述的属性的最大允许值。如果值不能保持等于或小于此值,则匹配将失败。

min

一个整数,指定其描述的属性的最小允许值。如果值不能保持等于或大于此值,则匹配将失败。

exact

一个整数,指定属性必须具有的特定、必需值才能被认为是可接受的。

ideal

一个整数,指定属性的理想值。如果可能,将使用此值,但如果不可能,用户代理将使用最接近的匹配项。

实例属性

对象上将存在以下属性的某些组合(但不一定是全部)。这可能是因为给定浏览器不支持该属性,或者因为它不适用。例如,由于 RTP 在 WebRTC 连接协商期间不提供其中一些值,因此与 RTCPeerConnection 关联的轨道将不包括某些值,例如 facingModegroupId

所有媒体轨道的实例属性

deviceId

一个 ConstrainDOMString 对象,指定可接受和/或必需的设备 ID 或设备 ID 数组。

groupId

一个 ConstrainDOMString 对象,指定可接受和/或必需的组 ID 或组 ID 数组。

音轨的实例属性

autoGainControl

一个 ConstrainBoolean 对象,指定是否首选和/或需要自动增益控制。

channelCount

一个 ConstrainULong,指定可接受和/或必需的声道数或声道数范围。

echoCancellation

一个 ConstrainBooleanOrDOMString 对象,指定是否首选和/或需要回声消除,如果支持,指定类型。

latency

一个 ConstrainDouble,指定可接受和/或必需的延迟或延迟范围。

noiseSuppression

一个 ConstrainBoolean,指定是否首选和/或需要降噪。

sampleRate

一个 ConstrainULong,指定可接受和/或必需的采样率或采样率范围。

sampleSize

一个 ConstrainULong,指定可接受和/或必需的采样大小或采样大小范围。

volume 已废弃 非标准

一个 ConstrainDouble,指定可接受和/或必需的音量或音量范围。

图像轨道的实例属性

whiteBalanceMode

一个 String,指定 "none""manual""single-shot""continuous" 之一。

exposureMode

一个 String,指定 "none""manual""single-shot""continuous" 之一。

focusMode

一个 String,指定 "none""manual""single-shot""continuous" 之一。

pointsOfInterest

传感器上一个或多个兴趣点的像素坐标。这要么是 { x:value, y:value } 形式的对象,要么是此类对象的数组,其中 value 是双精度整数。

exposureCompensation

一个 ConstrainDouble(双精度整数),指定 f 值调整高达 ±3。

colorTemperature

一个 ConstrainDouble(双精度整数),指定所需的开尔文色温。

iso

一个 ConstrainDouble(双精度整数),指定所需的 ISO 设置。

brightness

一个 ConstrainDouble(双精度整数),指定所需的亮度设置。

contrast

一个 ConstrainDouble(双精度整数),指定明暗之间的差异程度。

saturation(饱和度)

一个 ConstrainDouble(双精度整数),指定颜色强度的程度。

sharpness

一个 ConstrainDouble(双精度整数),指定边缘的强度。

focusDistance

一个 ConstrainDouble(双精度整数),指定到聚焦对象的距离。

zoom

一个 ConstrainDouble(双精度整数),指定所需的焦距。

torch

一个布尔值,定义补光灯是否持续连接,这意味着只要轨道处于活动状态,它就会保持开启。

视频轨道的实例属性

aspectRatio

一个 ConstrainDouble,指定可接受和/或必需的视频 宽高比 或宽高比范围。

facingMode

一个 ConstrainDOMString 对象,指定可接受和/或必需的面向模式或面向模式数组。

frameRate

一个 ConstrainDouble,指定可接受和/或必需的帧率或帧率范围。

height

一个 ConstrainULong,指定可接受和/或必需的视频高度或高度范围。

width

一个 ConstrainULong,指定可接受和/或必需的视频宽度或宽度范围。

resizeMode

一个 ConstrainDOMString 对象,指定用户代理可用于推导视频轨道分辨率和帧率的模式或模式数组。允许的值为:

crop-and-scale

用户代理可以使用硬件/操作系统的原始输出的裁剪和分辨率或帧率的缩减,以满足其他约束。此约束允许开发人员即使其约束指示的特定格式不被硬件原生支持,也能获得缩减后的视频。

none

用户代理使用底层硬件(如摄像头或其驱动程序)或操作系统提供的分辨率。

如果未指定 resizeMode,浏览器将根据考虑指定约束和允许值两者的“适应度距离”来选择分辨率。

共享屏幕轨道的实例属性

这些约束适用于传递给 getDisplayMedia() 以获取屏幕共享流的对象的 video 属性。

displaySurface

一个 ConstrainDOMString,指定用户可以选择的显示表面类型。这可以是以下字符串中的一个,或一个列表以允许多个源表面:

browser

流包含用户选择的单个浏览器选项卡的内容。

monitor

流的视频轨道包含用户一个或多个屏幕的全部内容。

window

流包含用户选择用于共享的单个窗口。

logicalSurface

一个 ConstrainBoolean 值,可以包含单个布尔值或一组布尔值,指示是否允许用户选择不直接对应于显示区域的源表面。这些可能包括窗口的后备缓冲区,以允许捕获被前面其他窗口隐藏的窗口内容,或包含需要滚动以查看其窗口中全部内容的更大文档的缓冲区。

suppressLocalAudioPlayback 实验性

一个 ConstrainBoolean 值,描述对 suppressLocalAudioPlayback 可约束属性值的请求或强制约束。此属性控制当选项卡被捕获时,选项卡中播放的音频是否会继续通过用户的本地扬声器播放。

restrictOwnAudio 实验性

一个 ConstrainBoolean 值,指定对 restrictOwnAudio 可约束属性值的请求或强制约束。此属性控制源自捕获选项卡的系统音频是否从屏幕捕获中过滤掉。

规范

规范
媒体捕获和流
# dom-mediatrackconstraints
屏幕捕获
# extensions-to-mediatrackconstraintset

另见