MediaStreamTrack: applyConstraints() 方法

Baseline 廣泛可用 *

此功能已成熟,可跨多種裝置和瀏覽器版本使用。自 2017 年 9 月以來,它已在瀏覽器中提供。

* 此特性的某些部分可能存在不同級別的支援。

MediaStreamTrack 介面的 applyConstraints() 方法將一組約束應用於軌道;這些約束允許網站或應用為軌道的(可約束)屬性(例如幀率、尺寸、回聲消除等)建立理想值和可接受的值範圍。

約束可以用來確保媒體滿足你偏好的某些指南。例如,你可能偏好高解析度影片,但要求幀率稍低一些,以幫助保持資料速率足夠低,避免網路負擔過重。約束還可以指定理想和/或可接受的尺寸或尺寸範圍。有關如何應用你偏好的約束的更多資訊,請參閱 功能、約束和設定 中的 應用約束

語法

js
applyConstraints()
applyConstraints(constraints)

引數

constraints 可選

一個 MediaTrackConstraints 物件,列出了要應用於軌道可約束屬性的約束;任何現有約束都將被指定的​​新值替換,並且任何未包含的可約束屬性都將恢復到其預設約束。如果省略此引數,則會清除所有當前設定的自定義約束。此物件代表了 Promise 解析必須適用的基本約束集。該物件可能包含一個 `advanced` 屬性,其中包含其他 MediaTrackConstraints 物件的陣列,這些物件被視為嚴格要求。

返回值

一個 Promise,當約束成功應用時解析。如果約束無法應用,則 promise 會因一個 OverconstrainedError(該錯誤是一個 DOMException,其名稱為 OverconstrainedError,並帶有附加引數)而被拒絕,以表明約束無法滿足。當嘗試配置軌道時,如果指定的約束過於嚴格而無法找到匹配項,則可能發生這種情況。

示例

以下顯示瞭如何指定一組基本和高階約束。它指定頁面或 Web 應用需要寬度在 640 到 1280 之間,高度在 480 到 720 之間,其中每對數字的後一個數字是首選。`advanced` 屬性進一步指定,首選影像尺寸為 1920x1280,或者 縱橫比 為 1.333(如果不可用)。請注意,這些約束也說明了規範中所說的“回退策略”。

js
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.
    });
});

規範

規範
媒體捕獲和流
# dom-mediastreamtrack-applyconstraints

瀏覽器相容性

另見