Skip to content

Commit adc2469

Browse files
committed
fix(player): 修复音频 seek 无法拖动进度条的问题
1 parent e0d3845 commit adc2469

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

ChuChartManager/Controllers/MusicController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public ActionResult GetAudio([FromQuery] int id, [FromQuery] string assetDir)
188188
var wav = AudioHelper.GetWavFromMusic(music);
189189
if (wav == null) return NotFound();
190190

191-
return File(wav, "audio/wav");
191+
return File(new MemoryStream(wav), "audio/wav", enableRangeProcessing: true);
192192
}
193193

194194
[HttpGet]

ChuChartManager/Front/src/store/player.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ audio.addEventListener('timeupdate', () => {
1616
if (!isSeeking.value) currentTime.value = audio.currentTime
1717
})
1818
audio.addEventListener('loadedmetadata', () => { duration.value = audio.duration })
19+
audio.addEventListener('durationchange', () => { if (Number.isFinite(audio.duration)) duration.value = audio.duration })
1920
audio.addEventListener('ended', () => { isPlaying.value = false })
2021

2122
watch(volume, (v) => { audio.volume = v })
@@ -48,5 +49,11 @@ export function startSeek() { isSeeking.value = true }
4849
export function endSeek(time: number) {
4950
audio.currentTime = time
5051
currentTime.value = time
51-
isSeeking.value = false
52+
const unlock = () => {
53+
isSeeking.value = false
54+
audio.removeEventListener('seeked', unlock)
55+
}
56+
audio.addEventListener('seeked', unlock, { once: true })
57+
// 兜底:如果 seeked 未触发(如音频未加载),300ms 后强制解锁
58+
setTimeout(unlock, 300)
5259
}

0 commit comments

Comments
 (0)