作者:你说的白是小白的白_958 | 来源:互联网 | 2023-05-20 19:33
我正在创建一个chrome扩展程序,它使用chrome tabCapture API从选项卡中捕获音频.我想在另一个html页面中播放这个音频流,希望最终为它创建一个可视化器.
我在后台脚本中捕获音频
chrome.browserAction.onClicked.addListener(function(activeTab) {
var cOnstraints= {
audio: true,
video: false,
};
var visualizerPage = chrome.extension.getURL("/views/visualizer.html");
chrome.tabCapture.capture(constraints, function(stream) {
console.log("\ngot stream");
console.log(stream);
chrome.tabs.create({
url: visualizerPage
}, function(tab) {
chrome.tabs.sendMessage(tabID, {
"message": "stream",
"stream": stream
});
});
});
从单击扩展名的任何页面捕获音频流.打开另一个选项卡,音频流将作为消息发送给它.
visualizer.html页面的Javascript是
function loadStream(stream) {
// what do I have to put here to play the stream?
}
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.message === "stream") {
var stream = request.stream;
if (!stream) {
console.log("stream is null");
return;
}
console.log(stream);
loadStream(stream);
}
else if (request.message === "statusChanged") {
console.log("statusChanged");
}
});
到目前为止,我使用音频上下文将音频流加载到Web音频api中
var cOntext= new AudioContext();
var source = context.createMediaStreamSource(stream);
但是在尝试创建源时,脚本会挂起.
问题是我不确定流是什么类型的(tabCapture api说它是一个LocalMediaStream).
如何让页面播放音频流?