如何在Chrome扩展程序弹出窗口中提供webkitGetUserMedia权限?

我已经成功使用webkitGetUserMedia从普通网页上的网络摄像头捕捉视频,但是当我尝试在Chrome扩展程序的popup.html中执行此操作时,没有任何反应。我没有收到任何权限错误,它似乎从来没有问过(inforbar从不在弹出窗口中滑落)。有没有办法解决?它看起来不像我可以在清单json中授予权限。如何在Chrome扩展程序弹出窗口中提供webkitGetUserMedia权限?

回答:

Chrome扩展和的WebRTC:

的Chrome Extensions Manifest Permissions Documentation没有提到在清单中,“videoCapture”和“audioCapture”所需的两个权限,所以我不知道这功能可用Chrome浏览器扩展与否,你应该尝试看看会发生什么,然后再继续! ;)

Chrome封装应用和的WebRTC:

然而,在Chrome打包应用程序,这是可能的,无论是在沙盒和非沙盒页! Chrome浏览器套装应用与扩展程序非常相似,因此,根据您的具体情况,您可能希望构建应用程序。

在Packaged Apps Manifest Permissions Documentation中,“videoCapture”和“audioCapture”权限未明确列出,但在示例中演示了一个权限。

我有一个打包的应用程序,它使用沙盒HTML页面来运行webkitGetUserMedia,并且它工作的很好。以下是您在清单中需要的内容:

{ 

"name": "app name",

"version": "0.2",

"manifest_version": 2,

"minimum_chrome_version": "21",

"app": {

"background": {

"scripts": ["main.js"]

}

},

"icons": {

/* "128": "icon_128.png" */

},

"sandbox": {

"pages": ["call.htm" ]

},

"permissions" : [ "videoCapture", "audioCapture" ]

}

然后您需要从chrome:// newtab页面启动弹出窗口作为应用程序。 main.js应该包含这样的内容:

// Chrome v24+ 

chrome.app.runtime.onLaunched.addListener(function() {

chrome.app.window.create('mainpage.html',

{width: 1190, height: 709});

});

而主页应该是您的弹出窗口。在我的设置中,我在mainpage.html中有一个名为call.htm的iframe,并且iframe页面被沙箱化,因此它可以执行一些不安全的操作,只能将其作为普通网页完成。但是,如果我运行在非沙盒弹出的getUserMedia命令,我得到来自呼叫webkitGetUserMedia的MediaStream对象:

navigator.webkitGetUserMedia({ audio: true, video: true }, 

function (stream) {

mediaStream = stream;

},

function (error) {

console.error("Error trying to get the stream:: " + error.message);

});

我测试了它,我能够捕捉到我的视频在弹出。

回答:

这是一个便宜的黑客攻击,但是如果你为你的扩展创建了一个选项页面,并且在JS中包含一个对webkitGetUserMedia的调用,它会请求该扩展的所有URI的权限,页面的背景页面也有权使用它。

回答:

至于建议的@tsbarnes有一个技巧,但Chrome应用的黑客不同的是,你从background.js调用navigator.webkitGetUserMedia代替,一样的东西:

navigator.webkitGetUserMedia({audio: true, video: true}, function() { 

console.log('ok');

}, function(e) {

console.log('webcam not ok');

});

然后你仍然可以访问音频/视频从窗口。HTML或任何其他的WebView

回答:

问计navigator.webkitGetUserMediaoptions.js的作品,但你必须在新标签中打开option.html弹出,否则你会得到一个错误,以便在manifest.json你必须写

"options_ui": { 

"page": "options.html",

"chrome_style": true,

"open_in_tab": true

}

以上是 如何在Chrome扩展程序弹出窗口中提供webkitGetUserMedia权限? 的全部内容, 来源链接: utcz.com/qa/261825.html

回到顶部