22

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

怎么做到呢?是否有可以做到这一点的 Web 音频 API 功能或某种 JS MP3 编码器?

4

6 回答 6

13

我见过的唯一 Javascript MP3 编码器是https://github.com/akrennmair/libmp3lame-js,这是一个使用 emscripten 的端口。它应该很慢,我从未使用过它。

我不知道任何本机编写的 Javascript MP3 编码器,并且 Web 音频 API 不涵盖编码。

于 2013-06-04T17:37:56.657 回答
8

有一个用纯 javascript 编写的库,称为 lamejs。从原始音频编码 mp3。它比 libmp3lame 的 emscripten 编译快得多。https://github.com/zuker/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-10T15:11:42.597 回答
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

于 2015-06-18T01:40:12.373 回答
2

我找到了一个带有现场演示的不错的库:MediaStreamRecorder

演示之一在这里:录音

RecordRTC也很有用,但 MSR 似乎更容易开始。

于 2015-08-27T18:03:23.640 回答
1

要使用 javascript 录制 mp3 而无需使用任何其他框架使用 web worker,您可以使用此项目:https ://github.com/nusofthq/Recordmp3js ,此处也有很好的解释:

http://audior.ec/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/

有了这个,还可以写入 .mp3 文件并使其可下载。

于 2015-02-06T22:50:51.097 回答
1

目前只有 Firefox 支持编码成更小的格式:

Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit) Not supported 25.0 (25.0) Not supported Not supported Not supported

AFAIK 仅支持 OGG。但是OGG比WAV好。

于 2014-12-24T22:43:20.130 回答