aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/Player/Player.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Player/Player.svelte')
-rw-r--r--src/lib/Player/Player.svelte13
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));