javascript - 低延迟音频播放?

标签 javascript html webkitaudiocontext

是否可以使用 HTML5 实现低延迟音频播放?我目前正在使用 AudioContext API。但是,我得到的延迟约为 4 秒。这对于我的用例来说太过分了。

    if (!window.audioContextInstance) {
      window.audioContextInstance = new webkitAudioContext();
    }
    var context = window.audioContextInstance;

    context.sampleRate = 48000;

    var buffers = [];

    var src = new Float32Array();
    var srcIdx = 0;
    var bufferSize = 2048;

    var sourceNode = context.createScriptProcessor(bufferSize, 1, 2);
    sourceNode.onaudioprocess = function(evt) {
      var c0 = evt.outputBuffer.getChannelData(0);
      var c1 = evt.outputBuffer.getChannelData(1);

      var sample = 0;

      while(sample < bufferSize) {
        if (srcIdx >= src.length) {
          if (!buffers.length) {
            console.log("Warning: Audio Buffer Underflow")
            return;
          }
          src = buffers.shift();
          srcIdx = 0;
        }

        while(sample < bufferSize && srcIdx < src.length) {
          c0[sample] = src[srcIdx++];
          c1[sample] = src[srcIdx++];
          sample++;
        }
      }
    };

    scope.$on('frame', function (event, frame) {          

      while (buffers.length > 1) {
        buffers.shift();
      }

        buffers.push(new Float32Array(frame.data));

      if (buffers.length > 0) {
        sourceNode.connect(context.destination);
      }
    });
  }

最佳答案

您可能对 riffwave.js 感兴趣其延迟似乎远低于 4 秒。

关于javascript - 低延迟音频播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939953/

相关文章:

javascript - 具有超过 1 个条件的 jQuery 选择器

来自 12 小时格式日期和时间字符串的 JavaScript 新日期

audio-recording - 从 AudioContext (Web Audio API) 录制声音

javascript - 如何在没有 JSONP 的情况下通过 AJAX 调用访问来自不同服务器的数据?

javascript - jQuery Slider 空第二个循环

javascript - 如何关闭彼此独立的多个div。 javascript

html - 最小化浏览器时我的部分布局被截断

javascript - 制作适用于多种分辨率的 2 列布局的最佳方法?

mono - Chrome M34 中 MediaStreamDestination 的 AudioContext 立体声输出