Chrome/Edge 版本至 113 及以上时 getDisplayMedia 的 selfBrowserSurface 参数的默认值为 `exclude `

Qiang 发布在技术 1

Edge 的一个版本更新,让之前一直工作的录屏代码出现问题了,具体表现:无法再获取当前选项卡了。

试了很多示例和 B 站的 Web 直播,都无法获取当前选项卡,内心烦燥。

于是重新查看 MediaDevices: getDisplayMedia 方法介绍,看到了一个参数:selfBrowserSurface ,他的作用是指定浏览器是否应允许用户选择要捕获的当前选项卡

与我想要的功能一致。

selfBrowserSurface:
一个枚举值,指定浏览器是否应允许用户选择要捕获的当前选项卡。这有助于避免视频会议应用无意中共享自己的显示器时遇到的“无限镜厅”效果。可能的值为 include ,提示浏览器应在提供的捕获选项中包含当前选项卡,以及 exclude ,提示应将其排除。规范不强制要求默认值;有关特定于浏览器的默认值,请参阅浏览器兼容性部分。

所以 Chrome/Edge 升级到 113 及以上版本时,原来该参数的默认值由 include 更新为 exclude了,导致原来的代码无法再获取当前选项卡页面了。

更新后的代码如下:

var displayMediaOptions: DisplayMediaStreamOptions = {
  video: true,
  audio: true,
  selfBrowserSurface: 'include'
};
navigator.mediaDevices.getDisplayMedia(displayMediaOptions).then((stream) => {
  // handle display media stream
});
TOP
前往 GitHub Discussion 评论