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