使用chrome.desktopCapture.chooseDesktopMedia时出现异常

3
在Chrome清单V2中,我能够轻松地捕获桌面。但在清单版本3中尝试此操作时,我没有成功。我感觉在尝试在Manifest V3中进行此操作时可能缺少了某些东西。
我一直在使用这个作为参考:https://developer.chrome.com/docs/extensions/reference/desktopCapture/ 我的清单已被授予这些权限。
"permissions": [
    "idle",
    "tabs",
    "storage",
    "notifications",
    "alarms",
    "desktopCapture"

],

这是我一直在测试的示例代码,只是为了看看是否可以让屏幕选择器出现。我没有包含tabs.tab,因为它被标记为可选项,我想看看插件是否可以自行触发屏幕录制功能。

chrome.desktopCapture.chooseDesktopMedia(["screen"], (streamID, options) => {console.log(id)});

我一直在尝试在我的background.js文件中运行它。

每次运行时,Chrome会完全崩溃,没有给出任何错误。

检查崩溃转储,我可以看到以下信息。

异常代码:0xC0000005

异常信息:线程尝试读取或写入其没有适当访问权限的虚拟地址。


1
C0000005是引擎本身的一个非常严重的错误。您应该向Chromium团队报告此问题(首先检查是否已存在有关此问题的错误票)。 - CherryDT
我遇到了相同的错误,我创建了这个 bug https://bugs.chromium.org/p/chromium/issues/detail?id=1271590 - Andres Rincon
我之前应该跟进一下。我发现了一个已存在的 bug 并更新了我的信息到这个链接 https://bugs.chromium.org/p/chromium/issues/detail?id=1257659&can=2&q=desktopCapture - StevenDStanton
1个回答

0

我是这样解决 Manifest v3 的问题的。

它也给了我一些错误。当我查看文档时,发现 chooseDesktopMedia 需要三个参数。

  1. DesktopCaptureSourceType[]
  2. Tab
  3. 回调函数

我在你的问题中看到你已经放置了13。我也这样做了,但是它给了我一些错误。所以,在调用后台脚本中的chrome.desktopCapture.chooseDesktopMedia之前,我确保先获取活动选项卡。

所以代码看起来像这样:

chrome.tabs.query({ active: true }, (tabs) => {
      if (tabs.length) {
        const tab = tabs[0];
        var pending = chrome.desktopCapture.chooseDesktopMedia(["window"], tab, (streamId) => {
          //console.log(streamId, tab);
        });
      }
      return false;
    })

它起作用了。希望这有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接