Convert base64 audio to file

2020-04-12 02:10发布

I have an audio blob, I then run

var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = () => {
  var base64data = reader.result;
  //log of base64data is "data:audio/ogg; codecs=opus;base64,GkX..."
}

Now I send this data to my server and all I'm trying to do is convert to an '.ogg' file (wav or mp3 preferred). The base64 works fine when passed to an HTML audio player. On the server I tried

fs.writeFileSync('file.ogg', base64data);

I always get the file created however it never plays, what I'm I doing wrong please?

1条回答
一纸荒年 Trace。
2楼-- · 2020-04-12 02:27

You have binary data encoded in base64 string here. First of all you need trim data url meta info. Then you can create binary buffer from base64 string and store it to file.

fs.writeFileSync('file.ogg', Buffer.from(base64data.replace('data:audio/ogg; codecs=opus;base64,', ''), 'base64'));
查看更多
登录 后发表回答