fix: only switch quality during active playback, not after video ended

This commit is contained in:
2026-06-12 17:51:01 +08:00
parent d46a2194f4
commit 503496ea0e
2 changed files with 8 additions and 6 deletions

View File

@@ -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)

View File

@@ -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 })