Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Turn byte array to sound

I have an mp3 file as byte array. How to turn it back to a sound and play using javascript?

Thanks

like image 453
Ilya Blokh Avatar asked Aug 04 '11 07:08

Ilya Blokh


2 Answers

As far as I know this is decidedly non trivial.

  1. You can turn the array into a data URI, and then play it back normally.
  2. You can post it back to a server to do the encoding and play it back normally.
  3. You can use a fancy API

2 seems inefficient, 3 requires browser specific support. So, use 1. I havent tried it, but check out http://www.bitsnbites.eu/?p=1. You should expect this to be way less efficient than native code.

like image 92
Philip JF Avatar answered Sep 17 '22 22:09

Philip JF


This is just a follow-up on Philip JF's answer:

"1" will probably work fine without any of the tricky stuff explained on the bitsnbites link. Since mp3 files are without header, you can pass on the data to the URL "as is", without WAVE header. So the way to go (modified from the bitsnbites page):

Construct the string to be played as a DATA URI: Initialize a string with "data:audio/mpeg;base64," Append the mp3 byte array as a formatted string in base64 encoding using the btoa() function. Then you can invoke this Data URI in order to play it.

References:

https://developer.mozilla.org/en/DOM/window.btoa

http://en.wikipedia.org/wiki/Data_URI_scheme

like image 23
Florian Avatar answered Sep 16 '22 22:09

Florian