Android上的Web Audio API延迟

时间:2016-02-29 13:38:06

标签: android audio web

我只能在SO上找到一个类似的问题并且它没有答案,所以我希望有人可以对此有所了解!

我在我的英特尔XDK项目中使用了Web Audio API,但发现尽管它在桌面Chrome和iPad上没有任何延迟(可能是iPhone,虽然我无法对此进行测试),但是在Android上是非常明显的延迟 - 延迟我的意思是用户启动声音和播放之间的延迟大约300ms。它是一致的延迟,会影响通过Web Audio API生成的所有声音。

我想知道是否有某种参数来设置延迟?通常它是由处理器的速度设置的(即较慢的处理器=较大的缓冲区),但我不知道Web Audio API在该级别上是如何工作的。

任何帮助将不胜感激!

var context = new (window.AudioContext || window.webkitAudioContext)();

var bgs=[];var samps=[

  'sound/ting.mp3',
  'sound/ratchet1.mp3',
  'sound/blip.mp3',
  'sound/blipback.mp3',
  'sound/TelTing1.mp3',
  'sound/TelTing2.mp3',
  'sound/TelTing3.mp3',
  'sound/TelTing4.mp3',
  'sound/TelDialReturn.mp3',
  'sound/TelDialStop.mp3',
  'sound/TelDialSlow2.mp3',
  'sound/sea1.mp3'

];

var bufferLoader;

window.onload=function(){

  bufferLoader = new BufferLoader(
    context,samps,
    finishedLoading
    );

  bufferLoader.load();

  function finishedLoading(bufferList) {
  debug("Audio Loaded")
  soundloop=1;
  for(i=0;i<samps.length;i++){bgs[i]=bufferList[i]}
  play(0)
  }
}

var sourceA = null;
var gainNodeA = context.createGain()

function play(x) {
  sourceA = context.createBufferSource();
  sourceA.buffer = bgs[x];
  sourceA.connect(gainNodeA);
  gainNodeA.connect(context.destination)
  gainNodeA.gain.value=1;
  sourceA.start(0);
}

0 个答案:

没有答案