如何解决如何在Node.js服务器中将Web音频Blob转换为可播放的.wav或.mp3文件?
我正在设置一个节点服务器来记录麦克风音频,并将其保存以用于声音安装。我可以获取文件,但实际上不是.wav文件,因此无法在自己的计算机上播放音频文件。关于如何将音频转换为.wav甚至mp3的任何想法? 非常感谢您的帮助!
服务器端:
app.get('/messages',(req,res) => {
readdir(messageFolder)
.then(messageFilenames => {
res.status(200).json({ messageFilenames });
let totalFiles = messageFilenames.length; // return the number of files
console.log(totalFiles); // print the total number of files
myID = totalFiles + 1;
})
.catch(err => {
console.log('Error reading message directory',err);
res.sendStatus(500);
});
});
app.post('/messages',res) => {
if (!req.body.message) {
return res.status(400).json({ error: 'No req.body.message' });
}
//the problem must be in this line?
writeFile(messageFolder + "sound" + ".wav",req.body.message,'base64')
.then(() => {
res.status(201).json({ message: 'Saved message' });
})
.catch(err => {
console.log('Error writing message to file',err);
res.sendStatus(500);
});
});
客户端:
saveButton.addEventListener('click',() => {
const reader = new FileReader();
reader.readAsDataURL(audio.audioBlob);
reader.onload = () => {
const base64AudioMessage = reader.result.split(',')[1];
fetch('/messages',{
method: 'POST',headers: {
'Content-Type': 'application/json'
},body: JSON.stringify({
message: base64AudioMessage
})
}).then(res => {
if (res.status === 201) {
return populateAudioMessages();
}
console.log('Invalid status saving audio message: ' + res.status);
});
};
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。