2017-03-29 156 views
0

我使用MediaRecorder录制麦克风。 Chrome中MediaRecorder的默认格式是video/webm。下面是简单的例子:在Chrome上解码Mediarecorder的音频数据失败

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); 
     }); 

此代码是“未捕获(在承诺)抛出:DOMException:无法解码音频数据”的错误特罗对context.decodeAudioData只有铬。

这里有什么问题,我该如何修复它在铬?

这里是工作在plunker例如:plunker

回答

0

好吧......没有为这个问题没有修复。这是一个铬错误,你可以看到它here

从MediaRecorder解码音频的解决方案将在铬版本58上提供。我已经在58-beta测试它,它的工作原理。