Files
ArtPlayer/packages/artplayer/src/subtitle/timing.ts
T

17 lines
776 B
TypeScript

import type { SubtitleCue } from './types'
export function refreshPausedCues(track: TextTrack | undefined, video: { paused?: boolean, currentTime?: number } | undefined, cues: readonly SubtitleCue[]): void {
if (!track || track.mode === 'disabled' || !video?.paused || !Number.isFinite(video.currentTime))
return
const time = video.currentTime!
const expected = cues.filter(cue => cue.startTime <= time && time < cue.endTime)
const active = Array.from(track.activeCues || [])
if (expected.length === active.length && expected.every((cue, index) => active[index] === cue))
return
// Some engines retain stale active flags after timing edits while paused.
for (const cue of cues)
track.removeCue(cue)
for (const cue of cues)
track.addCue(cue)
}