MediaTrackSettings: restrictOwnAudio 属性

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

MediaTrackSettings 字典的 restrictOwnAudio 属性用于控制是否从屏幕捕获中过滤掉源自捕获选项卡(capturing tab)的系统音频,从而在某些情况下实现更干净的屏幕录制。

例如,如果正在捕获的网页本身正在播放嵌入式音频或视频,那么该音频将被包含在捕获中。这可能会导致不希望的回声或干扰来自其他选项卡或应用程序的预期音频源,因此将其从捕获中移除是可取的。

这是一个布尔值,其中 true 启用捕获选项卡的系统音频限制,false 则禁用该限制。

如果值为 true,用户代理将尝试移除由调用 MediaDevices.getDisplayMedia() 来启动屏幕捕获的选项卡生成的任何音频。如果通过处理移除音频失败,用户代理可能会排除来自捕获选项卡的所有音频。

注意:如果捕获的显示表面不包含系统音频,此设置将不起作用。

示例

以下函数设置了一个约束对象,该对象为调用 getDisplayMedia() 指定了选项。它会添加 restrictOwnAudio 约束(请求从屏幕捕获中过滤掉源自捕获选项卡的系统音频),前提是该约束已知被浏览器支持。然后,通过调用 getDisplayMedia() 并将返回的流附加到由变量 videoElem 引用的 <video> 元素来启动捕获。

js
async function capture() {
  const supportedConstraints = navigator.mediaDevices.getSupportedConstraints();
  const displayMediaOptions = {
    audio: {},
  };

  if (supportedConstraints.restrictOwnAudio) {
    displayMediaOptions.audio.restrictOwnAudio = true;
  }

  try {
    videoElem.srcObject =
      await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
  } catch (err) {
    /* handle the error */
  }
}

规范

规范
屏幕捕获
# dom-mediatrackconstraintset-restrictownaudio

浏览器兼容性

另见