如何在JavaScript中更改音频文件编解码器

时间:2018-10-02 14:36:13

标签: javascript audio-recording ibm-watson

我正在使用MediaRecorder从浏览器收集音频,并且所生成的音频文件的编解码器与IBM Watson Speech to Text不兼容。编解码器是“ matroska”,我需要将其作为原始PCM编解码器。

如何设置从浏览器收集的音频文件的编解码器?这是我正在使用的一些代码:

var options = {
  audioBitsPerSecond : 32000
}
var mediaRecorder = new MediaRecorder(audioStream, options);
mediaRecorder.start();

var data = [];
mediaRecorder.ondataavailable = e => console.log(mediaRecorder.audioBitsPerSecond);
mediaRecorder.ondataavailable = e => e.data.size && data.push(e.data);
mediaRecorder.onstop = () => process(data);

function process(data) {
  var int16Array = [];
  const blob = new Blob(data, {
    type: 'audio/wav'
  })

1 个答案:

答案 0 :(得分:0)

您可以通过在新MediaRecorder()的mimeType参数的第二个变量中设置编解码器来进行设置。感谢Jaromanda X指出我在查看新Blob类型时的错误。像这样做...

var options = {
    audioBitsPerSecond : 32000,
    mimeType: 'audio/webm;codecs=pcm',
}
var mediaRecorder = new MediaRecorder(audioStream,options);

在其上签出MDN文档:MDN Network: MediaRecorder

您可以查看isTypeSupportedMediaRecorder.isTypeSupported()是否支持模仿类型。

那么,我到底支持什么编解码器?我已经广泛地寻找了这个答案,但是,我发现的最好的是另一篇stackoverflow帖子:Where is a comprehensive list of supported media types when recording with the Media * API?