chrome.tabCapture.capture返回的流未定义
我有一些js代码在下面的chrome背景扩展中:
function handleCapture(stream) {
console.log('content captured');
console.log("backround.js stream: ", stream);
alert(stream);
// localStream = stream; // used by RTCPeerConnection addStream();
// initialize(); // start signalling and peer connection process
}
function captureCurrentTab() {
console.log('reqeusted current tab');
chrome.tabs.getSelected(null, function(tab) {
console.log('got current tab');
var selectedTabId = tab.id;
chrome.tabCapture.capture({
audio : false,
video : true
}, handleCapture);
});
}
但是,如果运行此操作,传入的“handleCapture”变量“流”始终未定义? 这是预期还是有什么,我在这里失踪?
此外,我已确认我的manifest.json包含捕获许可,并且我使用的是金色canary版本31.0.1607.1 Canary Aura。
谢谢,迈克
您应该提供一些限制条件来使其工作。 请参阅:http://developer.chrome.com/extensions/tabCapture.html#type-MediaStreamConstraint
您提供的捕获参数是MediaTrackConstraint,请参阅:http://dev.w3.org/2011/webrtc/editor/getusermedia.html#mediastreamconstraints
这也是一个简单的JS对象,您应该在其中设置一些必需的选项,请参阅:http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-MediaTrackConstraints
因此,如果您在强制对象中设置了所有必需的设置,以下内容应该有所帮助:
chrome.tabCapture.capture({
audio : false,
video : true,
{
mandatory: {
width: { min: 640 },
height: { min: 480 }
}
}
}, handleCapture);
当我尝试纯粹从后台脚本驱动tabCapture时,我遇到了同样的问题,我在tabCapture参考页面上找到了这个问题:
捕获当前活动选项卡的可见区域。 此方法只能在调用扩展后的当前活动页面上使用,类似于activeTab的工作方式。 请注意,Chrome内部页面无法捕获。
我的理解是,这意味着您需要从browserAction中为您的扩展驱动它,如下所示:
chrome.browserAction.onClicked.addListener(function(request) {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabCapture.capture({audio: true, video: true}, callback);
});
});
这对我来说很有用。
链接地址: http://www.djcxy.com/p/63719.html