【发布时间】:2019-01-10 10:06:12
【问题描述】:
我在一个项目中工作,我需要创建准确的音频编辑器。
我注意到,在音频上设置 currentTime 时,Safari 有一些古怪的行为。看来,根据跳转发生的当前时间和跳转的位置,实际时间点甚至可以偏离 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)
});
因此,在此示例中基本上发生的情况是,如果在该点过去后尝试在音频中跳转到 8 秒,则音频会在该点之前几秒钟开始播放。例如,如果将 currentTime 设置为比该点少 8 秒,并且在延迟跳转到该点后,它会从正确的位置开始播放。
我想强调一下,这很可能只是一个巧合,因为行为的变化取决于 currentTime 设置的位置和时间点。这个设置最清楚问题。
例如与 Chrome 进行比较以了解差异。
奇怪的是,无论最终结果如何,音频都会返回相同的 currentTime。所以换句话说,音频似乎“认为”它处于正确的位置,即使它显然不是。
我的问题是,为什么 Safari 对 currentTime 如此不准确,是否有解决此问题的方法?
Safari 版本 12.0 (14606.1.36.1.9)。
【问题讨论】:
-
您找到解决方案了吗?我在 OS X 和 iOS 上遇到了这个问题
标签: javascript html audio safari