importScripts('libmp3lame.min.js'); var mp3codec; this.addEventListener('message', function(e) { switch (e.data.cmd) { case 'init': if (!e.data.config) { e.data.config = { }; } mp3codec = Lame.init(); Lame.set_mode(mp3codec, e.data.config.mode || Lame.JOINT_STEREO); Lame.set_num_channels(mp3codec, e.data.config.channels || 2); Lame.set_num_samples(mp3codec, e.data.config.samples || -1); Lame.set_in_samplerate(mp3codec, e.data.config.samplerate || 44100); Lame.set_out_samplerate(mp3codec, e.data.config.samplerate || 44100); Lame.set_bitrate(mp3codec, e.data.config.bitrate || 128); Lame.init_params(mp3codec); // console.log('Version :', Lame.get_version() + ' / ', // 'Mode: '+Lame.get_mode(mp3codec) + ' / ', // 'Samples: '+Lame.get_num_samples(mp3codec) + ' / ', // 'Channels: '+Lame.get_num_channels(mp3codec) + ' / ', // 'Input Samplate: '+ Lame.get_in_samplerate(mp3codec) + ' / ', // 'Output Samplate: '+ Lame.get_in_samplerate(mp3codec) + ' / ', // 'Bitlate :' +Lame.get_bitrate(mp3codec) + ' / '); // 'VBR :' + Lame.get_VBR(mp3codec)); break; case 'encode': var mp3data = Lame.encode_buffer_ieee_float(mp3codec, e.data.buf, e.data.buf); self.postMessage({cmd: 'data', buffer: mp3data.data}); break; case 'finish': var mp3data = Lame.encode_flush(mp3codec); self.postMessage({cmd: 'end', buffer: mp3data.data}); Lame.close(mp3codec); mp3codec = null; break; } });