MediaStreamTrack: getCapabilities() 方法

Baseline 2024
新推出

自 2024 年 10 月以来,此功能已可在最新的设备和浏览器版本上使用。此功能可能不适用于旧设备或浏览器。

getCapabilities() 方法是 MediaStreamTrack 接口的一部分,它会返回一个对象,该对象根据平台和 用户代理 详细说明了关联 MediaStreamTrack 的每个可约束属性的接受值或值范围。

一旦您了解了浏览器的能力,您的脚本就可以使用 applyConstraints() 来请求将轨道配置为匹配理想或可接受的设置。有关如何处理可约束属性的详细信息,请参阅 能力、约束和设置

语法

js
getCapabilities()

参数

无。

返回值

一个 MediaTrackCapabilities 对象,它指定了用户代理的可约束属性的每个属性支持的接受值或值范围。请注意,并非所有属性都出现在每个轨道上,可用的成员取决于轨道是音频还是视频。这可能包含以下成员:

对于音频和视频轨道

deviceId

一个标识捕获设备的字符串。

groupId

一个对相关设备进行分组的字符串。

注意: 出于历史原因,这两个属性是字符串,而不是像所有其他能力那样是字符串数组。

仅适用于音频轨道

autoGainControl

一个布尔值数组。如果源无法进行自动增益控制,则报告单个 false。如果无法关闭自动增益控制,则报告单个 true。如果脚本可以控制该功能,则源将报告 truefalse

channelCount

一个范围对象,包含 minmax 属性(均包含一个非负整数),描述了支持的通道数。

echoCancellation

一个布尔值或字符串数组,指示是否支持回声消除。如果源无法进行回声消除,则报告单个 false。如果源可以进行回声消除,则数组以 true 开头。如果脚本可以控制该功能,则数组以 true, false 开头。此外,如果源允许控制将取消哪些音频源,则数组还包括 "all" 和/或 "remote-only" 的值。

latency

一个范围对象,包含 minmax 属性(均包含一个数字),描述了从声音开始到数据可用之间的预期延迟(以秒为单位)。

noiseSuppression

一个布尔值数组,指示降噪功能是否可用。如果源无法进行降噪,则报告单个 false。如果无法关闭降噪,则报告单个 true。如果脚本可以控制该功能,则源将报告 truefalse

sampleRate

一个范围对象,包含 minmax 属性(均包含一个非负整数),描述了支持的音频采样率范围。

sampleSize

一个范围对象,包含 minmax 属性(均包含一个非负整数),描述了支持的线性采样位深度范围。

仅适用于视频轨道

aspectRatio

一个范围对象,包含 minmax 属性(均包含一个数字),描述了支持的视频宽高比范围(宽度除以高度)。

facingMode

一个字符串数组,指示摄像头方向。有关支持的值,请参阅 MediaTrackConstraints.facingMode。在某些设备上,可能会报告多个朝向模式;例如,在一个具有多个面向用户的摄像头的、高端的远程呈现解决方案中,用户左侧的摄像头可以同时报告 "left""user"

frameRate

一个范围对象,包含 minmax 属性(均包含一个数字),描述了支持的帧率范围。

height

一个范围对象,包含 minmax 属性(均包含一个非负整数),描述了支持的高度范围(以像素为单位)。

width

一个范围对象,包含 minmax 属性(均包含一个非负整数),描述了支持的宽度范围(以像素为单位)。

resizeMode

一个字符串数组,指示用户代理如何从摄像头分辨率推导出所需分辨率。有关支持的值,请参阅 MediaTrackConstraints.resizeMode。始终包含 "none" 值。

有关每个属性含义的更多信息,请参阅 MediaTrackConstraints

示例

以下代码片段将请求用户授权访问其本地摄像头和麦克风。一旦授权,每个 MediaStreamTrack 的能力将以 MediaTrackCapabilities 对象的格式记录到控制台。

js
navigator.mediaDevices
  .getUserMedia({ video: true, audio: true })
  .then((stream) => {
    const tracks = stream.getTracks();
    tracks.map((t) => console.log(t.getCapabilities()));
  });

一个示例能力对象如下所示:

json
{
  "autoGainControl": [true, false],
  "channelCount": {
    "max": 1,
    "min": 1
  },
  "deviceId": "jjxEMqxIhGdryqbTjDrXPWrkjy55Vte70kWpMe3Lge8=",
  "echoCancellation": [true, false],
  "groupId": "o2tZiEj4MwOdG/LW3HwkjpLm1D8URat4C5kt742xrVQ=",
  "noiseSuppression": [true, false]
}

对象的具体内容将取决于浏览器和媒体硬件。

规范

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

浏览器兼容性

另见