【问题标题】:Web Audio API - record to MP3?Web Audio API - 录制到 MP3?
【发布时间】:2013-05-28 17:11:33
【问题描述】:

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

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

【问题讨论】:

  • 我只知道相反的解码方式,即从 MP3 到 WAV - github.com/audiocogs/mp3.js。您可能需要深入研究github.com/kripken/emscripten 才能在 JS 中获得 wav 到 mp3 编码器。
  • 谢谢,我正在研究 Emscripten,但我仍然看不出它有什么帮助。
  • 你需要一些 C 编写的 wav-mp3 解码器,然后在浏览器中将 wav 解码为 mp3 :)

标签: javascript html mp3 wav web-audio-api


【解决方案1】:

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

我不知道有任何原生编写的 Javascript MP3 编码器,并且编码不包含在 Web Audio API 中。

【讨论】:

    【解决方案2】:

    有一个用纯 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
    

    【讨论】:

    • lamejs 对我来说效果很好。它似乎可以毫不费力地跟上实时,消除了对工作线程的需求。我在my site创建了一个测试页面,里面有详细的解释。
    【解决方案3】:

    我对这个问题以及现有的解决方案感到沮丧,所以我想出了一些更简单的方法:

    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

    【讨论】:

      【解决方案4】:

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

      这里有一个演示:Audio Recording

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

      【讨论】:

        【解决方案5】:

        目前只有 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 更好。

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            猜你喜欢
            • 2013-01-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多