mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
endOfStream's deriveState treated "the last currently-known segment is appended" as "the stream ended", with no completeness check. For VoD that's correct, but for live the last segment is only the rolling edge — so once it was appended the behavior called mediaSource.endOfStream() and set duration to the buffered (live-edge) end, the next reload's appends flipped the MediaSource back to 'open', and it re-fired on a loop. The visible symptom was mediaSource.duration flipping from Infinity to a finite, growing value (and a stream that could stall once the window slid past it). Add a completeness guard: a track only reaches 'eos-ready' when its playlist is complete (#EXT-X-ENDLIST) and its last segment is appended. Ongoing live (no endList) stays inert, so duration remains Infinity; a live stream that genuinely ends appends #EXT-X-ENDLIST, which opens the guard and ends it gracefully. Keys off completeness, consistent with resolveSelectedTrackDuration and seekToLiveEdge. Verified live playback through createSimpleHlsEngine: duration now holds at Infinity. Full spf suite green (1073 passed); two new tests cover the live-no-fire and graceful-endList-fire cases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@videojs/spf
⚠️ Beta Experimental adoption in real projects.
Overview
@videojs/spf is a lightweight, bundle-size-optimized streaming engine for Video.js 10. It provides
HLS playback with adaptive bitrate switching, WebVTT captions, and MSE support.
Community
If you need help with anything related to Video.js 10, or if you'd like to casually chat with other members: