Analyser.getFloatTimeDomainData () не существует в Safari - PullRequest
0 голосов
/ 14 января 2019

Очевидно, что в узле анализатора Safari нет метода getFloatTimeDomainData Здесь вы можете увидеть ошибку . Я ищу аналогичную функцию, которая копирует текущую форму волны или данные во временной области в массив Float32Array и будет работать в браузере Safari.

window.AudioContext = window.AudioContext || window.webkitAudioContext;
var buflen = 1024;
var buf = new Float32Array( buflen );
audioContext = new AudioContext();
MAX_SIZE = Math.max(4,Math.floor(audioContext.sampleRate/5000));
navigator.getUserMedia = navigator.getUserMedia ||
                   navigator.webkitGetUserMedia ||
                   navigator.mozGetUserMedia ||
                   navigator.msGetUserMedia;

navigator.mediaDevices.getUserMedia({audio: true})
        .then(function(stream) {
      gotStreamPre(stream);
    });

 function gotStreamPre(stream) {
  // Create an AudioNode from the stream.
  mediaStreamSource = audioContext.createMediaStreamSource(stream);
  // Connect it to the destination.
  analyser = audioContext.createAnalyser();
  analyser.fftSize = 2048;
  mediaStreamSource.connect( analyser );
  updatePitchPre();
 }

function updatePitchPre( time ) {
  if(analyser!=null){
     var cycles = new Array;
     analyser.getFloatTimeDomainData( buf );//not working on Safari
     var ac = autoCorrelatePre( buf , audioContext.sampleRate );
  if (ac > -1) {

    }
  if (!window.requestAnimationFrame)
       window.requestAnimationFrame = window.webkitRequestAnimationFrame;
       rafID = window.requestAnimationFrame( updatePitchPre );
   }
}
...