我问这个问题是因为我在任何地方都找不到答案。为了在JS中录制麦克风输入,我成功地实现了RecorderJS。但是,录制的文件是WAV,这会产生大文件。我正在寻找一种方法来记录与JS直接到MP3,或以某种方式编码到MP3而不是WAV。
怎么做呢?有没有可以做到这一点的Web Audio API函数或者某种JS MP3编码器?
发布于 2013-06-05 01:37:57
我见过的唯一的Javascript MP3编码器是https://github.com/akrennmair/libmp3lame-js,它是一个使用emscripten的端口。它应该很慢,但我从来没有用过它。
我不知道有任何原生编写的Javascript MP3编码器,而且编码不在Web Audio API中。
发布于 2015-06-10 23:11:43
有一个用纯javascript编写的库,叫做lamejs。从原始音频对mp3s进行编码。它比libmp3lame的emscripten编译速度快得多。https://github.com/zhuker/lamejs
示例用法:
lib = new lamejs();
mp3encoder = new lib.Mp3Encoder(1, 44100, 128); //mono 44.1khz encode to 128kbps
samples = new Int16Array(44100); //one second of silence
var mp3 = mp3encoder.encodeBuffer(samples); //encode mp3
发布于 2015-06-18 09:40:12
我对这个问题和现有的解决方案感到沮丧,所以我想出了一些更简单的方法:
https://github.com/sb2702/audioRecord.js
使用
创建记录器对象(异步,因为需要用户权限)
Recorder.new(function(recorder){
});
开始录制
recorder.start();
停止录制
recorder.stop();
导出为mp3
recorder.exportMP3(function(mp3Blob){
console.log("Here is your blob: " + URL.createObjectURL(mp3Blob));
});
主要基于RecorderJS,但更改了一些内容以导出为mp3文件,并且不再需要使用AudioContext / navigator.getUs
https://stackoverflow.com/questions/16881703
复制相似问题