javascript - 合并两个音频/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 中。
解决方案
推荐阅读
- java - 如何修复命令提示符中的 java.lang.NoClassDefFoundError?
- attributes - 如何将不推荐使用的属性应用于 using 语句
- javascript - 每次引用变量时如何执行布尔比较
- scrapy - 强制关闭爬虫蜘蛛
- artifactory - jfrog cli 只获取工件的名称?
- python - 为什么用字符串和 timedeltas 转置 DataFrame 会转换 dtype?
- geolocation - AMP by Example 的基于地理位置的同意流程是否存在故障?
- jquery - 动态创建选项卡时如何将选项卡设置为活动状态?
- javascript - 扩展包装组件的 props 的最佳实践
- c++ - 如何声明从 QApplication 派生的 Qt 类并覆盖通知函数?