我使用libmp3lame为javascript编码wave数据(emscripten portage,因此方法与c ++版本完全相同)。
它有效,但编码可能需要很长时间,我需要制作一个进度条来显示进度。我的问题是我不知道libmp3lame的哪些函数或我可以调用或绑定的事件使它成为现实。
为了记录(不确定它对我来说非常重要),这是我的代码:
mp3codec = Lame.init();
Lame.set_mode(mp3codec, config.mode || Lame.JOINT_STEREO);
Lame.set_num_channels(mp3codec, config.channels || 2);
Lame.set_out_samplerate(mp3codec, config.sampleRate || 44100);
Lame.set_bitrate(mp3codec, config.bitrate || 128);
Lame.init_params(mp3codec);
var mp3data;
for (var i = 0; i < bufferLength; i++) {
mp3data = Lame.encode_buffer_ieee_float(mp3codec, inputBufferLeft[i], inputBufferRight[i]);
addMp3Data(mp3data.data);
}
mp3Data = Lame.encode_flush(mp3codec);
addMp3Data(mp3data.data);
var final = new Blob([new Uint8Array(data)], { type: 'audio/mp3' });
此外,如果您有一个指向开发文档的链接,那就太棒了。
感谢。