MediaTrackConstraints: displaySurface 属性
MediaTrackConstraints 字典的 displaySurface 属性是一个 ConstrainDOMString,用于描述 displaySurface 可约束属性的首选值。
应用程序设置此属性是为了向用户代理标识应用程序偏好的显示表面类型(window、browser 或 monitor)。它不会影响用户可以选择共享的内容,但可能会用于以不同的顺序显示选项。
如果需要,您可以通过调用 MediaDevices.getSupportedConstraints() 返回的 MediaTrackSupportedConstraints.displaySurface 的值来确定此约束是否受支持。但是,通常这没有必要,因为浏览器会忽略它们不熟悉的任何约束。
值
一个 ConstrainDOMString,用于指定应用程序首选的显示表面类型。此值不会在浏览器用户界面中添加或删除显示源,但可能会重新排序它们。您无法使用此属性将用户限制在三个显示表面值 window、browser 和 monitor 的子集——但是,正如您将在下面看到的,您可以查看已选择的内容,并拒绝它。
请参阅 约束的定义方式。
注意: 您不能同时设置 monitorTypeSurfaces: "exclude" 和 displaySurface: "monitor",因为这两个设置是矛盾的。尝试这样做将导致相关的 getDisplayMedia() 调用因 TypeError 而失败。
用法说明
在通过 getDisplayMedia() 创建显示媒体后,您可以调用显示媒体的视频 MediaStreamTrack 上的 getSettings() 方法,然后检查返回的 MediaTrackSettings 对象的 displaySurface 属性值,来检查用户代理选择的设置。
例如,如果您的应用不希望共享显示器(可能捕获了非内容的背景),它可以使用类似以下的语法:
let mayHaveBackdropFlag = false;
let displaySurface = displayStream
.getVideoTracks()[0]
.getSettings().displaySurface;
if (displaySurface === "monitor") {
mayHaveBackdropFlag = true;
}
在此代码之后,如果流中包含的显示表面类型为 monitor,则 mayHaveBackdrop 为 true。后续代码可以使用此标志来确定是否执行特殊处理,例如删除或替换背景,或者从接收到的视频帧中“剪切”出单个显示区域。
示例
以下是 getDisplayMedia() 的一些示例约束对象,这些对象使用了 displaySurface 属性。
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 |
浏览器兼容性
加载中…