我试图以下列方式使用desktopCapture API。
chrome.desktopCapture.chooseDesktopMedia(
["screen", "window"], onAccessApproved);
当我设置断点并检查它时,chrome.desktopCapture显示为未定义。我的清单文件中的权限如下: -
"permissions": ["desktopCapture", "notifications" ]
此API失败的常见原因列为here
我没有遇到这些问题。
43.0.2357.124 m
仅供参考,我正在尝试开发Chrome扩展程序以使用PNacl捕获屏幕,并借用media_stream_video example downloaded from here。但是,我还没有向pexe方面发送信息。我仍然坚持chrome.desktopCapture.chooseDesktopMedia
返回undefined。
答案 0 :(得分:0)
您需要从扩展程序上下文中运行的后台脚本调用chrome.desktopCapture.chooseDesktopMedia
。 This Sample显示了使用扩展程序获取屏幕媒体的简单方法。
请记住,这是基于回调的,因此您可以从回调中访问流ID。
这在您的网页上下文中运行(请参阅完整示例here):
// 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);
}
}
);
}
这会在您的扩展程序中运行(请参阅完整示例here):
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
}
});