我正在一个项目中,我需要创建准确的音频编辑器。
我注意到,在音频上设置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)。
答案 0 :(得分:0)
媒体格式引起了问题。
当媒体不稳定时,seek / currentTime更新不能在野生动物园中可靠地工作(也许其他格式)。
但是,当我将媒体格式切换为 mp3 时,它与chrome一样可靠!