diff options
fix: more fixing
-rw-r--r-- | src/lib/Player/Player.svelte | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/lib/Player/Player.svelte b/src/lib/Player/Player.svelte index 078e84a..5981162 100644 --- a/src/lib/Player/Player.svelte +++ b/src/lib/Player/Player.svelte @@ -136,18 +136,25 @@ $effect(() => { if (loadedFrameTimestamp) saveFramePosition(frame); }); + let seeking = false; $effect(() => { if (audio && video && !playing && !playbackFrameOffset) { try { const f = frame; audio.currentTime = frame / video.fps; audio.play(); + seeking = true; (async () => { const targetTime = (frame + 1) / video.fps; while (audio.currentTime <= targetTime) { await new Promise((rs) => requestAnimationFrame(rs)); - if (playing || frame !== f) return; + if (playing) { + seeking = false; + return; + } + if (frame !== f) return; } + seeking = false; audio.pause(); audio.currentTime = frame / video.fps; })(); @@ -158,8 +165,10 @@ }); const updateAudioPlayingState = (playing: boolean) => { if (audio) { + console.warn('upd'); + if (playing) audio.play(); - else audio.pause(); + else if (!seeking) audio.pause(); } }; $effect(() => updateAudioPlayingState(playing)); |