Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert base64 audio to file

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?

like image 969
Olli Avatar asked Jan 16 '18 23:01

Olli


1 Answers

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'));
like image 153
Ilya Rezvov Avatar answered Oct 16 '22 19:10

Ilya Rezvov