我想将来自麦克风的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项目中看到的内容似乎很复杂。我会很高兴,如果有人掌握了这一主题,并可能知道我所指的项目可以告诉我,如果有一些方法,我可以适应它的项目,以适应我自己的需要。
发布于 2018-09-26 08:02:19
第一个示例已经在做您想要的事情了。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数据...一种不再需要的技术,特别是现在WebM中的MediaRecorder支持PCM。
https://stackoverflow.com/questions/52474485
复制相似问题