我正在编写一个 chrome 扩展程序,它只记录来自选项卡的音频并发送到我的本地服务器。
据我了解,chrome 扩展中的 MediaRecorder 与 html 中的一样。
chrome.tabCapture.capture({ audio: true }, stream => {
try {
const recorder = new MediaRecorder(stream, { mimeType: "audio/webm;codecs=opus" });
recorder.addEventListener('dataavailable', async (event) => {
const request = new Request("http://localhost:3000");
try {
await fetch(request, { method: "POST", body: event.data });
} catch (ex) {
console.error(ex);
}
});
const timeslice = 2 * 1000;
recorder.start(timeslice);
} catch (err) {
console.log(err.message);
return;
}
});
本地服务器仅用于将其保存为文件。我下载了文件并播放了它,但它说文件已崩溃。忘记发送/下载,我所做的只是将 blob 从 MediaRecorder 保存到文件中。但它被撞毁了。我需要做更多的事情吗?
实际上,首先我试图将 chrome 选项卡中捕获的音频流式传输到服务器,但流式传输当然失败了。我认为在 'audio/webm;codecs=opus' 中连接 blob 不起作用,因为 webm 文件格式不允许这样做。有什么方法可以在 'audio/webm;codecs=opus' blob 中从片段中构建可流式传输的 blob?