2

我正在编写一个 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?

4

0 回答 0