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

时间:2018-09-24 07:26:46

标签: blob mp3 html5-audio mediarecorder getusermedia

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

我在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项目中看到的内容用于自己的项目似乎很复杂。 如果有人精通该主题并且可能知道我所指的项目,我会很高兴能告诉我,是否有某种方法可以使该项目完成的工作适应我自己的需求。

1 个答案:

答案 0 :(得分:1)

第一个示例已经在执行您想要的操作。 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 API记录PCM数据……一种不再需要的技术,尤其是MediaRecorder现在在WebM中支持PCM。

相关问题