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

上一篇: chrome.tabCapture.capture returned stream is undefined

下一篇: Chrome Extension: Message Passing