我正在创建一个 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");
}
});
我目前所做的是使用音频上下文将音频流加载到网络音频 api
var context = new AudioContext();
var source = context.createMediaStreamSource(stream);
但脚本在尝试创建源代码时挂起。
问题是我不太确定流是什么类型(tabCapture api 说它是 LocalMediaStream)。
如何获取播放音频流的页面?
最佳答案
在 loadStream 函数中试试这个:
var audio = new Audio();
audio.src = URL.createObjectURL(stream);
audio.play();
关于javascript - Chrome 扩展选项卡捕获 API 音频流以在 HTML 页面中播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28666532/