首页 > 解决方案 > 合并两个音频/webm blob

问题描述

我的应用程序允许人们录制语音消息。我用反应麦克风做到这一点。

输出文件是 web 并且大小非常合理。我将它们上传到cloudinary。

我有一个名为crunker的音频合并器——它是一个 npm 包。

我将两个先前录制的音频网络合并到一个文件中并上传它们。

唯一的问题是 - Crunker 将小文件合并成一个巨大的 wav 文件。

所需大小的十倍。谁能给我指出一个方向,我可以自己写这个并推出一些 WebM 的东西?

React.useEffect(() => {
    if (crunkerRef.current) {
      let audio = new Crunker();
      audio
        .fetchAudio(oldAudioFileUrl, newAudioFileUrl)
        .then(buffers => audio.mergeAudio(buffers))
        .then(merged => audio.export(merged, 'audio/webm'))
        .then(output => {
          const file_reader = new FileReader();
          const dateOfRecording = Date.now();
          file_reader.readAsDataURL(output.blob);
          file_reader.onloadend = async function() {
            const base64_string = file_reader.result;
            await uploadAudio(base64_string, author, chatId, dateOfRecording);
            return base64_string;
          };
          setConsolidatedAudioFileName(`${chatId}-${dateOfRecording}-${author}.webm`);
          setTimeout(() => setConsolidationDone(true), 1500);
        })
        .catch(error => {
          throw new Error(error);
        });
    }
  }, [chatId, author, newAudioFileUrl, oldAudioFileUrl]);

这就是我正在做的事情。我的目标是编写一个自己的函数,它不会产生一个巨大的文件并留在 WebM 中。

标签: javascriptreactjsaudio

解决方案


推荐阅读