我一直在研究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}
...但是如果focusDistance
或colorTemperature
(或列出的其他here潜在成员)不在功能列表中,则由什么决定相机或其他媒体的可控制设置设备?
答案是否也适用于集成了摄像头和麦克风的移动设备,例如Android或iOS平板电脑或手机?
答案 0 :(得分:0)
track.getCapabilities()
返回的功能是四件事的交集:
getUserMedia
和getDisplayMedia
轨道具有不同的功能。 track.kind
。例如。视频轨道不会返回音频功能,反之亦然。您将了解浏览器支持的功能,如下所示:
console.log(navigator.mediaDevices.getSupportedConstraints());
然后,您通常需要依靠文档和规范来了解哪些功能适用于哪种方法和kind
。
较新版本的浏览器倾向于支持更多功能。并非所有浏览器都支持getCapabilities()
。例如,即使Firefox支持约束,它也不yet。
因此,总是最好在依赖功能之前检查支持的内容(如上所示)。
对于您提到的特定功能focusDistance
和colorTemperature
,它们是为getUserMedia
返回的音轨定义的,但是在mediacapture-image扩展规范中定义,因此应该显示出来如果他们支持。他们的缺席意味着他们不受支持。