From 503496ea0eba6635a4117b024672c242134c9339 Mon Sep 17 00:00:00 2001 From: cocos02 Date: Fri, 12 Jun 2026 17:51:01 +0800 Subject: [PATCH] fix: only switch quality during active playback, not after video ended --- engine/core/VideoManager.ts | 2 -- src/App.vue | 12 ++++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/engine/core/VideoManager.ts b/engine/core/VideoManager.ts index 817c693..cccc5e5 100644 --- a/engine/core/VideoManager.ts +++ b/engine/core/VideoManager.ts @@ -182,8 +182,6 @@ export class VideoManager { switchQuality(src: string, seekTime: number) { const active = this.active this.currentSrc = src - active.pause() - active.currentTime = 0 active.src = src active.load() this.preloaded.set(this.keyOf(active), src) diff --git a/src/App.vue b/src/App.vue index 4ba9036..c09d405 100644 --- a/src/App.vue +++ b/src/App.vue @@ -114,10 +114,14 @@ watch([() => store.qteTimeRelax, () => store.qteSingleKey], () => { watch(() => store.preferredQuality, (q) => { engine.videoManager.streamingQuality = q const scene = store.currentScene - if (scene?.streamingUrl && q) { - const url = engine.videoManager.resolveVideoUrl(scene, q) - const ct = engine.videoManager.getCurrentTime() - engine.videoManager.switchQuality(url, ct) + if (scene?.streamingUrl && scene.streamingUrl[q]) { + const active = engine.videoManager.getActiveVideoElement() + if (active && !active.ended) { + engine.videoManager.switchQuality( + engine.videoManager.resolveVideoUrl(scene, q), + engine.videoManager.getCurrentTime() + ) + } } }, { immediate: true })