Jaa*_*rhu 5 html javascript safari audio
我正在一个项目中工作,我需要创建准确的音频编辑器。
我注意到,Safari 在设置音频的 currentTime 时有一些奇怪的行为。看起来,根据跳转发生的当前时间以及跳转到的位置,实际时间点甚至可能会偏差 2-3 秒。
我做了一个JS 小提琴来演示这个问题。
代码的相关部分如下:
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)
});
Run Code Online (Sandbox Code Playgroud)
因此,基本上此示例中发生的情况是,如果在经过该点后尝试在音频中跳转到 8 秒,则音频会在该点之前几秒开始。例如,如果将 currentTime 设置为比该点少 8 秒,并且在延迟跳转到该点后,它会从正确的位置开始播放。
我想强调的是,这很可能只是一个巧合,因为行为的变化取决于设置 currentTime 的位置和时间点。这个问题在这个设置中最为明显。
例如与 Chrome 进行比较,听听差异。
奇怪的是,无论最终结果是什么,音频都会返回相同的 currentTime。因此,换句话说,音频似乎“认为”它处于正确的位置,即使它显然不是。
我的问题是为什么 Safari 的 currentTime 如此不准确?是否有解决此问题的方法?
Safari 版本 12.0 (14606.1.36.1.9)。
媒体格式会导致问题。
当媒体为 flac(也可能是其他格式)时,Seek/currentTime 更新在 safari 上无法可靠工作。
但是,当我将媒体格式切换为mp3时,它和 chrome 一样可靠!