MediaStreamTrack接口的applyConstraints()方法的作用是向轨道应用一组约束。 这些约束使网站或应用程序可以为轨道的可约束属性(例如帧频,尺寸,回声消除等)建立理想值和可接受的范围值。
约束可用于确保媒体符合您喜欢的某些准则。 例如,您可能更喜欢高清视频,但要求帧速率稍低一些,以帮助将数据速率保持在足够低的水平,以免使网络过载。 约束还可以指定理想的和/或可接受的大小或大小范围。
语法
const promise = track.applyConstraints(constraints);
参数
constraints 可选的
一个MediaTrackConstraints对象,列出要应用于轨道的可约束属性的约束。任何现有的约束都将替换为指定的新值,并且未包括的所有可约束属性都将恢复为其默认约束。 如果省略此参数,那么将清除所有当前设置的自定义约束。
返回值
当约束应用成功的时,返回一个Promise对象。 如果约束应用失败,则使用名为OverconstrainedError的MediaStreamError失败回调Promise,以指示无法满足约束。 如果指定的约束过于严格而无法在试图配置轨道时找到匹配项,则会发生这种情况。
例子
下面的例子显示了如何指定基本和高级约束集。 它指定页面或Web应用程序需要在640和1280之间的宽度以及在480和720之间的高度,每对中的后一个数字是首选。 advanced属性进一步指定1920 x 1280的图像大小是首选,如果没有可用的宽高比,则为1.333。
const constraints = { {min: 640, ideal: 1280}, height: {min: 480, ideal: 720}, advanced: [{ 1920, height: 1280},{aspectRatio: 1.333}] }; navigator.mediaDevices.getUserMedia({ video: true }) .then(mediaStream => { const track = mediaStream.getVideoTracks()[0]; track.applyConstraints(constraints) .then(() => { // Do something with the track such as using the Image Capture API. }) .catch(e => { // The constraints could not be satisfied by the available devices. }); });