是什么决定MediaStreamTrack.getCapabilities()方法枚举的功能?

时间:2018-10-25 01:02:11

标签: getusermedia

我一直在研究getUserMedia和WebRTC的应用程序,该应用程序要求我利用 getConstraints() getCapabilities()返回的信息MediaStreamTrack的> getSettings()方法。

在测试中,在与外部摄像头相对应的轨道上使用 getCapabilities()可能会返回类似...

aspectRatio: {max: 1920, min: 0.000925925925925926}
deviceId: ""
exposureCompensation: MediaSettingsRange {max: 2047, min: 3, step: 1}
exposureMode: (2) ["manual", "continuous"]
facingMode: []
focusMode: (2) ["manual", "continuous"]
frameRate: {max: 30, min: 1}
groupId: ""
height: {max: 1080, min: 1}
whiteBalanceMode: ["manual"]
width: {max: 1920, min: 1}
zoom: MediaSettingsRange {max: 5, min: 1, step: 1}

...但是如果focusDistancecolorTemperature(或列出的其他here潜在成员)不在功能列表中,则由什么决定相机或其他媒体的可控制设置设备?

答案是否也适用于集成了摄像头和麦克风的移动设备,例如Android或iOS平板电脑或手机?

1 个答案:

答案 0 :(得分:0)

track.getCapabilities()返回的功能是四件事的交集:

  1. 跟踪源。 getUserMediagetDisplayMedia轨道具有不同的功能。
  2. track.kind。例如。视频轨道不会返回音频功能,反之亦然。
  3. 浏览器支持的功能。
  4. 设备支持的功能。

您将了解浏览器支持的功能,如下所示:

console.log(navigator.mediaDevices.getSupportedConstraints());

然后,您通常需要依靠文档和规范来了解哪些功能适用于哪种方法和kind

较新版本的浏览器倾向于支持更多功能。并非所有浏览器都支持getCapabilities()。例如,即使Firefox支持约束,它也不yet

因此,总是最好在依赖功能之前检查支持的内容(如上所示)。

对于您提到的特定功能focusDistancecolorTemperature,它们是为getUserMedia返回的音轨定义的,但是在mediacapture-image扩展规范中定义,因此应该显示出来如果他们支持。他们的缺席意味着他们不受支持。