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

MediaTrackConstraints 字典用于描述一组媒体轨道功能以及每个功能可以采用的值。约束字典被传递到 applyConstraints() 以允许脚本建立一组精确(必需)值或范围和 / 或优选值或值范围,并且最近请求的一组自定义约束可以是通过调用 getConstraints() 来获得。

对于每个约束,您通常可以指定所需的精确值,所需的理想值,可接受值的范围和 / 或您希望尽可能接近的值。具体情况根据可约束属性的类型而有所不同。

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

属性

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

所有媒体轨道的属性

deviceId

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

groupId

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

音频轨道的属性

autoGainControl

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

channelCount

一个 ConstrainLong,指定可接受和 / 或要求的通道数或通道数的范围。

echoCancellation

一个 ConstrainBoolean 对象,指定是否首选和 / 或需要回声消除。

latency

一个 ConstrainDouble 指定可接受和 / 或要求的延迟或延迟范围。

noiseSuppression

一个 ConstrainBoolean,指定噪声抑制是否是首选和 / 或必需的。

sampleRate

一个 ConstrainLong,指定可接受和 / 或要求的采样率或采样率范围。

sampleSize

一个 ConstrainLong,指定可接受和 / 或要求的样本大小或样本大小范围。

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-stop 调整最多 ±3。

colorTemperature

一个 ConstrainDouble(双精度整数),以开氏度为单位指定所需的色温。

iso

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

brightness

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

contrast

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

saturation

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

sharpness

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

focusDistance

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

zoom

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

torch

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

视频轨道的属性

aspectRatio

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

facingMode

一个 ConstrainDOMString 对象,指定可接受和 / 或要求的方向或方向数组。

frameRate

一个 ConstrainDouble 指定可接受和 / 或要求的帧速率或帧速率范围。

height

一个 ConstrainLong 指定可接受和 / 或要求的视频高度或高度范围。

width

一个 ConstrainLong 指定可接受和 / 或要求的视频宽度或宽度范围。

resizeMode

一个 ConstrainDOMString 对象,指定 UA 可用于导出视频轨道分辨率的模式或模式数组。允许的值是 nonecrop-and-scalenone 表示用户代理使用摄像机,其驱动程序或操作系统提供的分辨率。 crop-and-scale 表示用户代理可以在摄像机输出上使用裁剪和缩小,以满足影响分辨率的其他约束。

共享屏幕轨道的属性

当使用 getDisplayMedia() 获取屏幕共享流时,这些约束应用于作为 DisplayMediaStreamConstraints 对象的 video 属性的一部分指定的 MediaTrackConstraints 对象。

cursor

一个 ConstrainDOMString,它指定是否在生成的轨道中包含鼠标光标,如果是,则在不移动时是否隐藏它。该值可以是以下字符串中的单个字符串,也可以是它们的数组,以允许浏览器灵活地决定如何处理光标。

always

除非鼠标移动到内容区域之外,否则鼠标始终在 MediaStream 的视频内容中可见。

motion

如果鼠标在移动,并且在停止移动后的一小段时间内,它总是显示在视频中。

never

鼠标光标永远不会包含在共享视频中。

displaySurface

一个 ConstrainDOMString,它指定了用户可以选择的显示表面的类型。它可以是以下字符串中的单个字符串,也可以是多个字符串的列表:

application

该流包含由用户选择呈现在一个视频轨道中的应用程序的所有窗口。

browser

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

monitor

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

window

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

logicalSurface

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

规范

规范 状态 备注
Media Capture and Streams 编者的草案 初始定义。
MediaStream Image Capture 工作草案 添加图像约束。
Unknown Unknown 添加了屏幕共享的属性。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持59 支持 支持 未知46 未知
aspectRatio59 未知 不支持 不支持 支持 未知
autoGainControl 支持 未知

55

46 moz

不支持 支持 未知
channelCount59 未知 不支持 不支持 支持 未知
cursor 不支持 未知 不支持 不支持 支持 未知
deviceId59 未知361 不支持 支持 未知
displaySurface 不支持 未知 不支持 不支持 支持 未知
echoCancellation59 未知50 不支持 支持 未知
facingMode59 未知50 不支持 支持 未知
frameRate59 未知50 不支持 支持 未知
groupId59 未知50 不支持 支持 未知
height59 未知50 不支持 支持 未知
latency59 未知50 不支持 支持 未知
logicalSurface 不支持 未知 不支持 不支持 支持 未知
noiseSuppression 支持 未知

55

46 moz

不支持 支持 未知
sampleRate59 未知 不支持 不支持 支持 未知
sampleSize59 未知 不支持 不支持 支持 未知
volume59 未知 不支持 不支持 支持 未知
width59 未知50 不支持 支持 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持59 支持 未知 支持 未知43 未知
aspectRatio5959 未知29 未知 未知 未知
autoGainControl 支持 支持 未知

55

46 moz

未知 未知 未知
channelCount5959 未知 不支持 未知 未知 未知
cursor 不支持 不支持 未知 不支持 未知 未知 未知
deviceId5959 未知362 未知 未知 未知
displaySurface 不支持 不支持 未知 不支持 未知 未知 未知
echoCancellation5959 未知50 未知 未知 未知
facingMode5959 未知50 未知 未知 未知
frameRate5959 未知50 未知 未知 未知
groupId5959 未知50 未知 未知 未知
height5959 未知50 未知 未知 未知
latency5959 未知50 未知 未知 未知
logicalSurface 不支持 不支持 未知 不支持 未知 未知 未知
noiseSuppression 支持 支持 未知

55

46 moz

未知 未知 未知
sampleRate5959 未知 不支持 未知 未知 未知
sampleSize5959 未知 不支持 未知 未知 未知
volume5959 未知 不支持 未知 未知 未知
width5959 未知50 未知 未知 未知

1. 在 Firefox 69 之前,Firefox 仅在传入 getUserMedia() 的约束中支持 deviceId

2. Firefox for Android,仅在传入 getUserMedia() 的约束中支持 deviceId

相关链接