mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-28 18:41:20 -08:00
refactor(mediabunny): [PKG-MB-06] own audio clocks, buffers and context lifecycle
This commit is contained in:
1 parent
9d037dcbf9
commit
ccee9157a7
30 files changed
+16182
-736
No files matched your search
@@ -0,0 +1,20 @@
|
||||
export interface AudioClock {
|
||||
audioContext: AudioContext | null
|
||||
paused: boolean
|
||||
audioContextStartTime: number
|
||||
playbackTimeAtStart: number
|
||||
playbackRate: number
|
||||
}
|
||||
|
||||
export function mediaTime(clock: AudioClock): number {
|
||||
if (clock.paused || !clock.audioContext)
|
||||
return clock.playbackTimeAtStart
|
||||
return (clock.audioContext.currentTime - clock.audioContextStartTime) * clock.playbackRate + clock.playbackTimeAtStart
|
||||
}
|
||||
|
||||
export function bufferTiming(clock: AudioClock, timestamp: number, duration: number, now: number) {
|
||||
const startAt = clock.audioContextStartTime + (timestamp - clock.playbackTimeAtStart) / clock.playbackRate
|
||||
const endAt = startAt + duration / clock.playbackRate
|
||||
const endMediaTime = (endAt - clock.audioContextStartTime) * clock.playbackRate + clock.playbackTimeAtStart
|
||||
return { startAt: Math.max(startAt, now), offset: startAt < now ? (now - startAt) * clock.playbackRate : null, endMediaTime }
|
||||
}
|
||||
Reference in new issue
Block a user