ano*_*use 12 google-chrome-extension webrtc
我已成功使用webkitGetUserMedia从普通网页上的网络摄像头捕获视频,但当我尝试在我的Chrome扩展程序的popup.html中执行此操作时,没有任何反应.我没有得到任何权限错误,它似乎从来没有问过(inforbar永远不会在弹出窗口中向下滑动).有没有办法解决?它看起来不像我可以在清单json中授予权限.
小智 17
这是一个廉价的黑客,但如果你为你的扩展创建一个选项页面并webkitGetUserMedia在其中包含对它的调用,它将请求该扩展的所有URI的权限,在用户在选项页面允许后,后台页面将也有权使用它.
Chrome扩展程序和WebRTC:
在Chrome扩展清单权限文档中没有提到在清单中,"videoCapture"和"audioCapture"所需的两个权限,所以我不知道该功能可用于Chrome浏览器扩展或没有,你应该尝试看看会发生什么继续之前!;)
Chrome打包应用和WebRTC:
但是,在Chrome打包的应用程序中,它可以在沙盒和非沙盒页面中使用!Chrome打包应用程序与扩展程序非常相似,因此根据您的操作,您可能需要构建应用程序.
在打包应用程序清单权限文档中,未明确列出"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" ]
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要从chrome:// newtab页面启动弹出窗口作为应用程序.main.js应包含以下内容:
// Chrome v24+
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('mainpage.html',
{width: 1190, height: 709});
});
Run Code Online (Sandbox Code Playgroud)
主页应该是你的弹出窗口.在我的设置中,我在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);
});
Run Code Online (Sandbox Code Playgroud)
我测试了它,我能够在弹出窗口中捕获我的视频.
| 归档时间: |
|
| 查看次数: |
7804 次 |
| 最近记录: |