Web Audio API - 记录到MP3?

时间:2013-06-02 10:00:36

标签: javascript html5 mp3 wav web-audio

我在问,因为我无法在任何地方找到答案。 我已成功实现RecorderJS以便在JS中录制麦克风输入。但是,录制的文件是WAV,导致大文件。我正在寻找一种方法用JS直接录制到MP3,或者以某种方式将位编码为MP3而不是WAV。

怎么做?是否有可以做到的Web Audio API功能或某种JS MP3编码器?

6 个答案:

答案 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)

我找到了一个带有现场演示的漂亮图书馆:MediaStreamRecorder

其中一个演示在这里:Audio Recording

RecordRTC也很有用,但MSR似乎更容易入手。

答案 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文件并使其可下载。