MediaTrackConstraints: displaySurface 屬性

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

MediaTrackConstraints 字典的 displaySurface 屬性是一個 ConstrainDOMString,用於描述 displaySurface 可約束屬性的首選值。

應用程式設定此屬性是為了向用戶代理標識應用程式偏好的顯示錶面型別(windowbrowsermonitor)。它不會影響使用者可以選擇共享的內容,但可能會用於以不同的順序顯示選項。

如果需要,您可以透過呼叫 MediaDevices.getSupportedConstraints() 返回的 MediaTrackSupportedConstraints.displaySurface 的值來確定此約束是否受支援。但是,通常這沒有必要,因為瀏覽器會忽略它們不熟悉的任何約束。

一個 ConstrainDOMString,用於指定應用程式首選的顯示錶面型別。此值不會在瀏覽器使用者介面中新增或刪除顯示源,但可能會重新排序它們。您無法使用此屬性將使用者限制在三個顯示錶面值 windowbrowsermonitor 的子集——但是,正如您將在下面看到的,您可以檢視已選擇的內容,並拒絕它。

請參閱 約束的定義方式

注意: 您不能同時設定 monitorTypeSurfaces: "exclude"displaySurface: "monitor",因為這兩個設定是矛盾的。嘗試這樣做將導致相關的 getDisplayMedia() 呼叫因 TypeError 而失敗。

用法說明

在透過 getDisplayMedia() 建立顯示媒體後,您可以呼叫顯示媒體的影片 MediaStreamTrack 上的 getSettings() 方法,然後檢查返回的 MediaTrackSettings 物件的 displaySurface 屬性值,來檢查使用者代理選擇的設定。

例如,如果您的應用不希望共享顯示器(可能捕獲了非內容的背景),它可以使用類似以下的語法:

js
let mayHaveBackdropFlag = false;
let displaySurface = displayStream
  .getVideoTracks()[0]
  .getSettings().displaySurface;

if (displaySurface === "monitor") {
  mayHaveBackdropFlag = true;
}

在此程式碼之後,如果流中包含的顯示錶面型別為 monitor,則 mayHaveBackdroptrue。後續程式碼可以使用此標誌來確定是否執行特殊處理,例如刪除或替換背景,或者從接收到的影片幀中“剪下”出單個顯示區域。

示例

以下是 getDisplayMedia() 的一些示例約束物件,這些物件使用了 displaySurface 屬性。

js
dsConstraints = { displaySurface: "window" }; // 'browser' and 'monitor' are also possible
applyConstraints(dsConstraints);
// The user still may choose to share the monitor or the browser,
// but we indicated that a window is preferred.

此外,請參閱演示約束如何使用的 約束練習器 示例。

規範

規範
螢幕捕獲
# dom-mediatrackconstraintset-displaysurface

瀏覽器相容性

另見