Javascript 合并两个音频/webm Blob

Javascript 合并两个音频/webm Blob,javascript,reactjs,audio,Javascript,Reactjs,Audio,我的应用程序允许人们录制语音消息。我是用麦克风做的 输出文件是web的,大小非常合理。我把它们上传到cloudinary 我有一个音频合并名为-这是一个npm包 我正在将两个以前录制的音频webms合并到一个文件中并上传它们 唯一的问题是-Crunker处理小文件并将它们合并成一个巨大的wav文件 十倍于所需尺寸。有没有人能告诉我一个方向,我可以自己写这篇文章,也可以发表一些关于WebM的东西 React.useEffect(() => { if (crunkerRef.curre

我的应用程序允许人们录制语音消息。我是用麦克风做的

输出文件是web的,大小非常合理。我把它们上传到cloudinary

我有一个音频合并名为-这是一个npm包

我正在将两个以前录制的音频webms合并到一个文件中并上传它们

唯一的问题是-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中

Crunker仅输出WAV数据(请参阅)。你必须自己编码成任何格式。是的,我知道。这就是我来这里的原因。您应该能够将
mergeAudio
的(浮点音频数据)输出馈送到您选择的音频编码器中。我不确定是否有一种浏览器原生方式将缓冲区编码(返回)到Opus,但有NPM。