AudioElement恢复播放停顿一秒钟并停止播放

时间:2012-08-04 16:24:50

标签: html5 google-chrome html5-audio dart

我正在尝试使用Dart和Chrome的html5音频,我将尽可能简单地使用AudioElement。我希望能够暂停声音并稍后恢复。我有:

startSound() {
  audioElement.src = "foo";
  audioElement.load();
  audioElement.play();
}

pause() {
  this.time = audioElement.currentTime;
  audioElement.pause();
}

unpause() {
  audioElement.currentTime = this.time;
  audioElement.play();
}

这些连接到事件处理程序,因此当有人点击“暂停”按钮时,播放停止。但是,当他们按下“恢复”按钮时,播放将恢复仅约半秒钟,然后再次停止。

如何让音频恢复正常?

2 个答案:

答案 0 :(得分:1)

Chrome中似乎存在计时问题。您需要告诉Chrome播放,然后再次暂停,然后再次播放,每次播放之间会有短暂的延迟。

unpause方法的工作版本是:

unpause() {
  var fn = () {
    audioElement.currentTime = this.time;
    audioElement.play();
  };
  fn();
  window.setTimeout(() => audioElement.pause(), 25);
  window.setTimeout(fn, 50);
}

答案 1 :(得分:0)

我在Chrome上遇到了类似的问题。当我“恢复”音频元素时播放之前它结结巴巴,我在Safari中没有遇到同样的问题。然而,事实证明,Chrome对我的mp3格式不满意。将ogg版本的文件添加到我标记中的源代码可以解决问题。