我在问,因为我无法在任何地方找到答案。 我已成功实现RecorderJS以便在JS中录制麦克风输入。但是,录制的文件是WAV,导致大文件。我正在寻找一种方法用JS直接录制到MP3,或者以某种方式将位编码为MP3而不是WAV。
怎么做?是否有可以做到的Web Audio API功能或某种JS MP3编码器?
答案 0 :(得分:11)
我见过的唯一的Javascript MP3编码器是https://github.com/akrennmair/libmp3lame-js,这是一个使用emscripten的端口。它本来应该很慢,我从来没有用过它。
我不知道任何原生编写的Javascript MP3编码器,Web Audio API不包含编码。
答案 1 :(得分:6)
有一个用纯javascript编写的库,叫做lamejs。从原始音频编码mp3。它比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
答案 2 :(得分:2)
我对这个问题和现有的解决方案感到很沮丧,所以我提出了一些更简单的方法:
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
答案 3 :(得分:2)
答案 4 :(得分:1)
目前只有Firefox支持编码为较小的格式:
Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Not supported 25.0 (25.0) Not supported Not supported Not supported
AFAIK仅支持OGG。但是比OW更好的OGG。
答案 5 :(得分:1)
要使用javascript录制mp3而不使用任何其他使用网络工作者的框架,您可以使用此项目:https://github.com/nusofthq/Recordmp3js这里也有很好的解释:
http://audior.ec/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/
有了这个,它也可以写入.mp3文件并使其可下载。