MediaStreamTrack: getCapabilities() 方法
getCapabilities() 方法是 MediaStreamTrack 接口的一部分,它会返回一个对象,该对象根据平台和 用户代理 详细说明了关联 MediaStreamTrack 的每个可约束属性的接受值或值范围。
一旦您了解了浏览器的能力,您的脚本就可以使用 applyConstraints() 来请求将轨道配置为匹配理想或可接受的设置。有关如何处理可约束属性的详细信息,请参阅 能力、约束和设置。
语法
getCapabilities()
参数
无。
返回值
一个 MediaTrackCapabilities 对象,它指定了用户代理的可约束属性的每个属性支持的接受值或值范围。请注意,并非所有属性都出现在每个轨道上,可用的成员取决于轨道是音频还是视频。这可能包含以下成员:
对于音频和视频轨道
注意: 出于历史原因,这两个属性是字符串,而不是像所有其他能力那样是字符串数组。
仅适用于音频轨道
autoGainControl-
一个布尔值数组。如果源无法进行自动增益控制,则报告单个
false。如果无法关闭自动增益控制,则报告单个true。如果脚本可以控制该功能,则源将报告true和false。 channelCount-
一个范围对象,包含
min和max属性(均包含一个非负整数),描述了支持的通道数。 echoCancellation-
一个布尔值或字符串数组,指示是否支持回声消除。如果源无法进行回声消除,则报告单个
false。如果源可以进行回声消除,则数组以true开头。如果脚本可以控制该功能,则数组以true, false开头。此外,如果源允许控制将取消哪些音频源,则数组还包括"all"和/或"remote-only"的值。 latency-
一个范围对象,包含
min和max属性(均包含一个数字),描述了从声音开始到数据可用之间的预期延迟(以秒为单位)。 noiseSuppression-
一个布尔值数组,指示降噪功能是否可用。如果源无法进行降噪,则报告单个
false。如果无法关闭降噪,则报告单个true。如果脚本可以控制该功能,则源将报告true和false。 sampleRate-
一个范围对象,包含
min和max属性(均包含一个非负整数),描述了支持的音频采样率范围。 sampleSize-
一个范围对象,包含
min和max属性(均包含一个非负整数),描述了支持的线性采样位深度范围。
仅适用于视频轨道
aspectRatio-
一个范围对象,包含
min和max属性(均包含一个数字),描述了支持的视频宽高比范围(宽度除以高度)。 facingMode-
一个字符串数组,指示摄像头方向。有关支持的值,请参阅
MediaTrackConstraints.facingMode。在某些设备上,可能会报告多个朝向模式;例如,在一个具有多个面向用户的摄像头的、高端的远程呈现解决方案中,用户左侧的摄像头可以同时报告"left"和"user"。 frameRate-
一个范围对象,包含
min和max属性(均包含一个数字),描述了支持的帧率范围。 height-
一个范围对象,包含
min和max属性(均包含一个非负整数),描述了支持的高度范围(以像素为单位)。 width-
一个范围对象,包含
min和max属性(均包含一个非负整数),描述了支持的宽度范围(以像素为单位)。 resizeMode-
一个字符串数组,指示用户代理如何从摄像头分辨率推导出所需分辨率。有关支持的值,请参阅
MediaTrackConstraints.resizeMode。始终包含"none"值。
有关每个属性含义的更多信息,请参阅 MediaTrackConstraints。
示例
以下代码片段将请求用户授权访问其本地摄像头和麦克风。一旦授权,每个 MediaStreamTrack 的能力将以 MediaTrackCapabilities 对象的格式记录到控制台。
navigator.mediaDevices
.getUserMedia({ video: true, audio: true })
.then((stream) => {
const tracks = stream.getTracks();
tracks.map((t) => console.log(t.getCapabilities()));
});
一个示例能力对象如下所示:
{
"autoGainControl": [true, false],
"channelCount": {
"max": 1,
"min": 1
},
"deviceId": "jjxEMqxIhGdryqbTjDrXPWrkjy55Vte70kWpMe3Lge8=",
"echoCancellation": [true, false],
"groupId": "o2tZiEj4MwOdG/LW3HwkjpLm1D8URat4C5kt742xrVQ=",
"noiseSuppression": [true, false]
}
对象的具体内容将取决于浏览器和媒体硬件。
规范
| 规范 |
|---|
| 媒体捕获和流 # dom-mediastreamtrack-getcapabilities |
浏览器兼容性
加载中…
另见
InputDeviceInfo.getCapabilities(),它也返回一个MediaTrackCapabilities对象。