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



我正在使用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'
})

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

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

查看它的MDN文档:MDN网络:MediaRecorder

您可以查看isTypeSupported是否支持 mimetype,MediaRecorder.isTypeSupported((。

那么,到底支持哪些编解码器呢?我已经广泛寻找这个答案,但是,我找到的最好的是另一个堆栈溢出帖子:使用 Media * API 录制时支持媒体类型的完整列表在哪里?

最新更新