为了从清单v2中的标签中捕获输出音频流,可以在后台脚本中使用
尝试了一些方法后,我终于让
在上述位于
chrome.tabCapture.capture
API获取流。但是,在清单v3中,tabCapture已经移动到前景,并且在后台脚本中不可用。它在内容脚本中也不可用。尝试了一些方法后,我终于让
tabCapture
在弹出窗口脚本中工作。但是,在我的用例中,弹出窗口无法长时间保持打开状态以便捕获流。相反,我偶然发现了tabCapture
的getMediaStreamId
方法,它给我一个streamId。所以,我想出了这个解决方案:
chrome.tabs.query({
active: true,
currentWindow: true
}, (tabs) => {
var tab = tabs[0];
chrome.tabCapture.getMediaStreamId({consumerTabId: tab.id}, (streamId) => {
chrome.tabs.sendMessage(tab.id, { action: 'streamId', streamId: streamId });
});
});
popup.js
文件中的脚本中,获取流ID后,我将其发送到内容脚本。 我现在卡在如何基于此streamId创建流以便可以捕获/记录该流。 文档提到使用getUserMedia()
,但我在那里没有成功。 这是我通过其他SO问题的一点帮助得出的结果(但它不起作用,我收到此错误DOMException:Error starting tab capture
):
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: 'tab',
chromeMediaSourceId: streamId
}
}
})
我想了解如何在清单v3中使tabCapture正常工作。
tabCapture.capture
API,我就会收到这样的错误:Extension has not been invoked for the current page
,这很明显,因为iframe的src是chrome-extension://<extension_runtime_id>/popup.html
。您能否提供更多有关您建议的方式的详细信息? - Rahul Sharma