MediaTrackConstraints
MediaTrackConstraints 字典用于描述一组媒体功能以及每个功能可以采用的值。
约束字典被传递给 MediaStreamTrack 接口的 applyConstraints() 方法,以允许脚本为轨道建立一组精确(必需)值或范围和/或首选值或值范围。
通过调用 getConstraints() 可以检索最近请求的自定义约束集。
此类型的对象也可以传递给:
-
MediaDevices.getUserMedia()方法,用于指定从相机或麦克风等硬件请求的媒体流的约束。 -
MediaDevices.getDisplayMedia()方法,用于指定从屏幕或窗口捕获请求的媒体流的约束。
约束
以下类型用于指定属性的约束。它们允许您指定一个或多个 exact 值(其中一个必须是参数的值),或一组 ideal 值(如果可能,应使用这些值)。您还可以指定一个单一值(或一个值数组),用户代理将尽力匹配该值,一旦所有更严格的约束都已应用。
要了解有关约束如何工作的更多信息,请参见功能、约束和设置。
注意:在 MediaDevices.getDisplayMedia() 调用中使用的约束中不允许使用 min 和 exact 值——它们会产生 TypeError——但它们允许在 MediaStreamTrack.applyConstraints() 调用中使用的约束中。
ConstrainBoolean
ConstrainBoolean 约束类型用于指定值为布尔值的属性的约束。其值可以设置为布尔值(true 或 false)或包含以下属性的对象:
ConstrainBooleanOrDOMString
ConstrainBooleanOrDOMString 约束类型用于指定值为布尔值或字符串值的属性的约束。它可以采用 ConstrainBoolean 和 ConstrainDOMString 部分中指定的值。
ConstrainDouble
ConstrainDouble 约束类型用于指定值为双精度浮点数的属性的约束。其值可以设置为数字或包含以下属性的对象:
ConstrainDOMString
ConstrainDOMString 约束类型用于指定值为字符串的属性的约束。其值可以设置为字符串、字符串数组或包含以下属性的对象:
ConstrainULong
ConstrainULong 约束类型用于指定值为整数的属性的约束。其值可以设置为数字或包含以下属性的对象:
实例属性
对象上将存在以下属性的某些组合(但不一定是全部)。这可能是因为给定浏览器不支持该属性,或者因为它不适用。例如,由于 RTP 在 WebRTC 连接协商期间不提供其中一些值,因此与 RTCPeerConnection 关联的轨道将不包括某些值,例如 facingMode 或 groupId。
所有媒体轨道的实例属性
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(双精度整数),指定颜色强度的程度。 -
一个
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,指定用户可以选择的显示表面类型。这可以是以下字符串中的一个,或一个列表以允许多个源表面: logicalSurface-
一个
ConstrainBoolean值,可以包含单个布尔值或一组布尔值,指示是否允许用户选择不直接对应于显示区域的源表面。这些可能包括窗口的后备缓冲区,以允许捕获被前面其他窗口隐藏的窗口内容,或包含需要滚动以查看其窗口中全部内容的更大文档的缓冲区。 suppressLocalAudioPlayback实验性-
一个
ConstrainBoolean值,描述对suppressLocalAudioPlayback可约束属性值的请求或强制约束。此属性控制当选项卡被捕获时,选项卡中播放的音频是否会继续通过用户的本地扬声器播放。 restrictOwnAudio实验性-
一个
ConstrainBoolean值,指定对restrictOwnAudio可约束属性值的请求或强制约束。此属性控制源自捕获选项卡的系统音频是否从屏幕捕获中过滤掉。
规范
| 规范 |
|---|
| 媒体捕获和流 # dom-mediatrackconstraints |
| 屏幕捕获 # extensions-to-mediatrackconstraintset |