如何在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 (将#修改为@)