捕获屏幕 -- chrome.desktopCapture.chooseDesktopMedia 失败 -- PNacl

Capture screen -- chrome.desktopCapture.chooseDesktopMedia fails -- PNacl extension

本文关键字:chooseDesktopMedia 失败 PNacl desktopCapture chrome 屏幕      更新时间:2023-09-26

>我正在尝试以以下方式使用desktopCapture API。

chrome.desktopCapture.chooseDesktopMedia(
            ["screen", "window"], onAccessApproved);

chrome.desktopCapture 在我设置断点并检查它时显示为未定义。我的清单文件中的权限如下:-

"permissions": ["desktopCapture", "notifications" ]

此处列出了此 API 失败的常见原因,如下所示

  • 应用程序的清单 .json 文件中缺少权限
  • API 是在较新版本的 Chrome 上定义的,然后是在当前运行时上定义的从 ChromeAPI 继承的文档

我没有这些问题。

  • 我的浏览器版本43.0.2357.124 m
  • 胡椒版是43

仅供参考,我正在尝试开发一个 Chrome 扩展程序来使用 PNacl 捕获屏幕,并借用了从这里下载的media_stream_video示例。 但我什至还没有向 pexe 方面发送消息。我仍然停留在返回未定义chrome.desktopCapture.chooseDesktopMedia

您需要从扩展上下文中运行的后台脚本调用chrome.desktopCapture.chooseDesktopMedia。此示例演示使用扩展获取屏幕媒体的简单方法。

请记住,这是基于回调的,因此您可以从回调访问流 ID。

这会在您的页面上下文中运行(请参阅此处的完整示例):

    // check that the extension is installed
    if (sessionStorage.getScreenMediaJSExtensionId) {
        // send a message to your extension requesting media
        chrome.runtime.sendMessage(sessionStorage.getScreenMediaJSExtensionId,
            {type:'getScreen', id: 1}, null,
            function (data) {
                if (data.sourceId === '') { // user canceled
                    // handle error
                } else {
                    constraints.video.mandatory.chromeMediaSourceId = data.sourceId;
                    getUserMedia(constraints, callback);
                }
            }
        );
    }

这在扩展的上下文中运行(请参阅此处的完整示例):

chrome.runtime.onMessageExternal.addListener(function (message, sender, callback) {
    switch(message.type) {
        case 'getScreen':
            var pending = chrome.desktopCapture.chooseDesktopMedia(message.options || ['screen', 'window'],
                                                               sender.tab, function (streamid) {
                // communicate this string to the app so it can call getUserMedia with it
                message.type = 'gotScreen';
                message.sourceId = streamid;
                callback(message);
                return false;
            });
            return true; // retain callback for chooseDesktopMedia result
    }
});
相关文章:
  • 没有找到相关文章