将数据音频转换为 mp3(或 ogg)

Converting data audio to mp3 (or ogg)

我想将来自麦克风的 Blob 数据音频转换为另一种(较少 space 占用)格式。

而且我在 GitHub 上找到了 this project,它做的事情非常接近我想要的,但问题是我通过以下方式获取我的音频数据:

navigator.mediaDevices.getUserMedia
then
rec = new MediaRecorder(stream);
rec.ondataavailable = e => {
    .......
    audioChunks.push(e.data);
    if (rec.state == "inactive") {
        let blob = new Blob(audioChunks,{type:'audio/x-mpeg-3'});
        .....

而我发现的项目以不同的方式处理数据音频:

navigator.getUserMedia({audio: true}, function(stream) {
      callback(new RecorderObject(audio_context.createMediaStreamSource(stream), cfg));
}, function(e) {
      console.log("An error occurred"); //Null if something goes wrong
      callback(null);
});

因此,将我在 GitHub 项目中看到的内容用于我自己的项目似乎很复杂。 如果掌握该主题并且可能了解我所指项目的人可以告诉我是否有某种方法可以调整项目所做的工作以满足我自己的需要,我将很高兴。

第一个例子已经在做你想要的了。 MediaRecorder 包括编解码器支持。

行:

let blob = new Blob(audioChunks, {type: 'audio/x-mpeg-3'});

应该是:

let blob = new Blob(audioChunks, {type: rec.mimeType});

https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/mimeType

另请注意,对于较旧的浏览器,mimeType 属性 可能不存在。对于那些,只需使用相同类型初始化 MediaRecorder。

new MediaRecorder(stream, {mimeType: 'audio/webm'})

https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/MediaRecorder

第二个示例是使用 Web Audio 录制 PCM 数据API...一种不再需要的技术,特别是 MediaRecorder 现在支持 WebM 中的 PCM。