解码媒体记录器的音频数据在 chrome 上失败



我使用MediaRecorder录制麦克风。MediaRecorder 在 chrome 中的默认格式是 video/webm。下面是一个简短的例子:

navigator.mediaDevices.getUserMedia({audio: true,video: false})
        .then(function(stream) {
            var recordedChunks = [];
            var recorder = new MediaRecorder(stream);
            recorder.start(10);
            recorder.ondataavailable = function (event) {
                if (event.data.size > 0) {
                    recordedChunks.push(event.data);
                } else {
                    // ...
                }
            }
            setTimeout(function(){
                recorder.stop();
                var blob = new Blob(recordedChunks, {
                  "type": recordedChunks[0].type
                });
                var blobUrl = URL.createObjectURL(blob);
                var context = new AudioContext();
                var request = new XMLHttpRequest();
                request.open("GET", blobUrl, true);
                request.responseType = "arraybuffer";
                request.onload = function () {
                context.decodeAudioData(
                    request.response,
                    function (buffer) {
                        if (!buffer) {
                            alert("buffer is empty!");
                        }
                        var dataArray = buffer.getChannelData(0);
                        //process channel data...
                        context.close();
                    },
                    function (error) {
                    alert(error);
                    }
                );
            };
            request.send();
            }, 3000);
        })
        .catch(function(error) {
          console.log('error: ' + error);
        });

此代码是仅在 chrome 中context.decodeAudioData上"未捕获(承诺(DOMException:无法解码音频数据"的 trow 错误。

这里有什么问题,如何在 chrome 中修复它?

这是 plunker 中的工作示例: plunker

好的...此问题没有修复程序。这是一个铬错误,你可以在这里看到它

从MediaRecorder解码音频的修复程序将在chrome版本58上提供。我已经在 58-beta 上测试过它并且它可以工作。

最新更新