我正在使用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 录制时支持媒体类型的完整列表在哪里?