WebRTC技术详解:从0到1构建多人视频会议系统
上QQ阅读APP看书,第一时间看更新

2.3 媒体约束

应用媒体约束是较为复杂且灵活的一部分,我们在本节进行详细讨论。

媒体约束、媒体能力、媒体约束设定值理解起来容易混淆。媒体约束是指媒体某一项技术特性,如分辨率、帧率等;媒体能力是当前设备能够支持的某个约束的量化指标,如帧率最高30;媒体约束设定值是指包含了浏览器默认设定值的所有媒体约束。

通常,我们使用如下方法处理媒体约束、媒体能力和媒体约束设定值。

  • MediaDevices.getSupportedConstraints():获取当前浏览器支持的约束数组。
  • MediaStreamTrack.getCapabilities():有了支持的约束数组,使用该方法获取这些约束的取值范围。
  • MediaStreamTrack.applyConstraints():根据应用程序的需要,调用该方法为约束指定自定义的值。
  • MediaStreamTrack.getConstraints():获取上述applyConstraints()方法传入的值。
  • MediaStreamTrack.getSettings():获取当前轨道上所有约束的实际值。

由于浏览器对约束的支持情况不同,下文介绍的约束并不一定是所有浏览器都支持。所以在使用约束前,需要先使用方法MediaDevices.getSupportedConstraints()进行检查。

代码清单2-25获取当前浏览器支持的所有约束对象,并检查是否支持iso约束。

代码清单2-25 检查iso约束示例

let supportedConstraints = navigator.mediaDevices.getSupportedConstraints();
if ( supportedConstraints && supportedConstraints.iso ) {
  // 存在名为iso的约束
}