同步Web Audio API和HTML5视频

时间:2018-01-26 01:15:53

标签: javascript html5 audio html5-video web-audio-api

我尝试将通过Web Audio API播放的音轨与在HTML5视频元素中播放的视频同步。使用光纤同步设备和大胆,我们可以非常高的精度检测音频和视频信号之间的漂移。

我尝试检测两个信号源之间的漂移并通过加速或减速音频进行校正,如下所示,只需将视频设置为与音频相同的位置即可。

Play(){
//...Play logic
//Used to calculate when the track started playing, set when play is triggered.
  startTime = audioContext.currentTime;
}

Loop(){

  let audioCurrentTime = startTime - audioContext.currentTime;

  if(videoElement.nativeElement.currentTime - audioCurrentTime > 0.1 ){
    videoElement.nativeElement.currentTime = audioCurrentTime;
  }

  requestAnimationFrame(Loop);
}

通过所有这些,我们仍然注意到两个源之间的变化漂移大约40ms。我已经开始相信audioContext.currentTime没有准确报告,因为当单步执行代码时,多个循环会报告同一时间,即使很明显时间过去了。我的猜测是报告的时间是传递给某个内部缓冲区的轨道数量。还有另一种方法可以从播放的音频源获得更准确的播放位置吗?

编辑:我已将代码更新为更接近实际来源。我设置了游戏初始化的时间,并将其与当前时间进行比较以查看曲目位置。这仍然会报告不是准确播放位置的时间。

0 个答案:

没有答案