MediaTrackConstraints - 用于描述一组媒体轨道功能以及每个功能可以采用的值的字典
MediaTrackConstraints
字典用于描述一组媒体轨道功能以及每个功能可以采用的值。约束字典被传递到 applyConstraints()
以允许脚本建立一组精确(必需)值或范围和 / 或优选值或值范围,并且最近请求的一组自定义约束可以是通过调用 getConstraints()
来获得。
对于每个约束,您通常可以指定所需的精确值,所需的理想值,可接受值的范围和 / 或您希望尽可能接近的值。具体情况根据可约束属性的类型而有所不同。
要了解有关约束如何工作的更多信息,请参阅功能,约束和设置。
属性
对象上将存在一些组合 - 但不一定是包含所有以下属性。这可能是因为给定的浏览器不支持该属性,或者因为它不适用。例如,因为 RTP 在协商 WebRTC 连接期间未提供其中一些值,与 RTCPeerConnection
关联的轨道将不包含某些值,例如 facingMode
或 groupId
。
所有媒体轨道的属性
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 可用于导出视频轨道分辨率的模式或模式数组。允许的值是 none
和 crop-and-scale
。 none
表示用户代理使用摄像机,其驱动程序或操作系统提供的分辨率。 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 | 添加了屏幕共享的属性。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 59 | 支持 | 支持 | 未知 | 46 | 未知 |
aspectRatio | 59 | 未知 | 不支持 | 不支持 | 支持 | 未知 |
autoGainControl | 支持 | 未知 | 55 46 moz | 不支持 | 支持 | 未知 |
channelCount | 59 | 未知 | 不支持 | 不支持 | 支持 | 未知 |
cursor | 不支持 | 未知 | 不支持 | 不支持 | 支持 | 未知 |
deviceId | 59 | 未知 | 361 | 不支持 | 支持 | 未知 |
displaySurface | 不支持 | 未知 | 不支持 | 不支持 | 支持 | 未知 |
echoCancellation | 59 | 未知 | 50 | 不支持 | 支持 | 未知 |
facingMode | 59 | 未知 | 50 | 不支持 | 支持 | 未知 |
frameRate | 59 | 未知 | 50 | 不支持 | 支持 | 未知 |
groupId | 59 | 未知 | 50 | 不支持 | 支持 | 未知 |
height | 59 | 未知 | 50 | 不支持 | 支持 | 未知 |
latency | 59 | 未知 | 50 | 不支持 | 支持 | 未知 |
logicalSurface | 不支持 | 未知 | 不支持 | 不支持 | 支持 | 未知 |
noiseSuppression | 支持 | 未知 | 55 46 moz | 不支持 | 支持 | 未知 |
sampleRate | 59 | 未知 | 不支持 | 不支持 | 支持 | 未知 |
sampleSize | 59 | 未知 | 不支持 | 不支持 | 支持 | 未知 |
volume | 59 | 未知 | 不支持 | 不支持 | 支持 | 未知 |
width | 59 | 未知 | 50 | 不支持 | 支持 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 59 | 支持 | 未知 | 支持 | 未知 | 43 | 未知 |
aspectRatio | 59 | 59 | 未知 | 29 | 未知 | 未知 | 未知 |
autoGainControl | 支持 | 支持 | 未知 | 55 46 moz | 未知 | 未知 | 未知 |
channelCount | 59 | 59 | 未知 | 不支持 | 未知 | 未知 | 未知 |
cursor | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 未知 | 未知 |
deviceId | 59 | 59 | 未知 | 362 | 未知 | 未知 | 未知 |
displaySurface | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 未知 | 未知 |
echoCancellation | 59 | 59 | 未知 | 50 | 未知 | 未知 | 未知 |
facingMode | 59 | 59 | 未知 | 50 | 未知 | 未知 | 未知 |
frameRate | 59 | 59 | 未知 | 50 | 未知 | 未知 | 未知 |
groupId | 59 | 59 | 未知 | 50 | 未知 | 未知 | 未知 |
height | 59 | 59 | 未知 | 50 | 未知 | 未知 | 未知 |
latency | 59 | 59 | 未知 | 50 | 未知 | 未知 | 未知 |
logicalSurface | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 未知 | 未知 |
noiseSuppression | 支持 | 支持 | 未知 | 55 46 moz | 未知 | 未知 | 未知 |
sampleRate | 59 | 59 | 未知 | 不支持 | 未知 | 未知 | 未知 |
sampleSize | 59 | 59 | 未知 | 不支持 | 未知 | 未知 | 未知 |
volume | 59 | 59 | 未知 | 不支持 | 未知 | 未知 | 未知 |
width | 59 | 59 | 未知 | 50 | 未知 | 未知 | 未知 |
1. 在 Firefox 69 之前,Firefox 仅在传入 getUserMedia()
的约束中支持 deviceId
。
2. Firefox for Android,仅在传入 getUserMedia()
的约束中支持 deviceId
。