防止Web Audio API的音调校正

时间:2017-06-29 13:13:12

标签: javascript mediarecorder web-audio-api

我有一个使用Web Audio API的音频,想要以一半的速度录制它,然后在后端加速到正常。我得到的输出是下降的。

var mr = null;
var source = null;
var stop = function(){
    mr.stop();
    source.stop();
}
var save = function(blob, filename){
    var link = document.createElement('a');
    link.href = URL.createObjectURL(blob);
    link.download = filename || 'data.json';
    link.click();
}
var context = new ( window.AudioContext || window.webkitAudioContext )();
var dest = context.createMediaStreamDestination();
function loadSound(url) {
  var request = new XMLHttpRequest();
  request.open('GET', url, true);
  request.responseType = 'arraybuffer';

  // Decode asynchronously
  request.onload = function() {
    context.decodeAudioData(request.response, function(buffer) {
        source = context.createBufferSource();
        source.buffer = buffer;
        source.playbackRate.value = 0.5;
        source.connect(dest);
        mr = new MediaRecorder(dest.stream);
        mr.start();
        source.start(0);
        var chunks = [];
        mr.ondataavailable = function(e){
          chunks.push(e.data);
        }
        mr.onstop = function(e) {
          var blob = new Blob(chunks, { 'type' : 'video/webm' });
          save(blob,"a.webm");
        }
        setTimeout(stop, 10000);
    }, null);
  }
  request.send();
}
loadSound("https://storage.googleapis.com/frulix-dev.appspot.com/words");

我为案例https://jsfiddle.net/thenectorgod/v3ogtwvp/4/创造了一个小提琴。

包含音频的正常录音不会发生,加速到2后音频会变清晰。

在这种情况下,有人可以建议如何获得正确的音频吗?

0 个答案:

没有答案