是什么导致桌面Safari html音频currentTime不准确?

时间:2019-01-10 10:06:12

标签: javascript html5 audio safari

我正在一个项目中,我需要创建准确的音频编辑器。

我注意到,在音频上设置currentTime时,Safari具有一些古怪的行为。似乎,根据currentTime发生跳转的位置和跳转的位置,实际的时间点甚至可以偏离2-3秒。

我做了一个JS fiddle to demonstrate the issue

代码的相关部分如下:

jump.addEventListener('click', function () {
  audio.currentTime = jumpToVal;
});

jump2.addEventListener('click', function () {
  audio.currentTime = Number.parseInt(jumpToVal) + Number.parseInt(jumpBufferVal);
  audio.volume = 0;
  setTimeout(function () {
    audio.volume = 1;
    audio.currentTime = jumpToVal;
  }, jumpDelayVal)
});

因此,基本上,此示例中发生的事情是,如果在经过该点之后尝试将音频跳到8s,则会在该点之前几秒钟开始音频。例如,如果将currentTime设置为比该时间点少8秒,并且在延迟跳转到该点后,它会从正确的位置开始播放。

我想强调的是,这很可能只是一个巧合,因为行为会根据设置currentTime的时间和地点而改变。使用此设置,问题最明显。

例如,与Chrome进行比较以了解不同之处。

奇异的是,无论最终结果如何,音频都将返回相同的currentTime。因此,换句话说,音频似乎“认为”它处于正确的位置,即使显然不是。

我的问题是,为什么Safari的currentTime如此不准确,以及是否有解决此问题的方法?

Safari版本12.0(14606.1.36.1.9)。

1 个答案:

答案 0 :(得分:0)

媒体格式引起了问题。

当媒体不稳定时,seek / currentTime更新不能在野生动物园中可靠地工作(也许其他格式)。

但是,当我将媒体格式切换为 mp3 时,它与chrome一样可靠!