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 = { width: {min: 640, ideal: 1280}, height: {min: 480, ideal: 720}, advanced: [{width: 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. }); });