Christian PillsburyandClaude Opus 4.8 c3e137cf39 feat(spf): recover end-of-stream stall on skewed A/V (spike)
Make a complete VOD reach native `ended` (and loop) reliably even when audio
and video tracks end a few ms apart, via two narrow changes in the behaviors
that already own end-of-playback:

1. `end-of-stream` reactor — add `LAST_SEGMENT_REACHED_SLACK` (0.5s) to the
   "playhead reached the last segment" gate. A tiny final segment (e.g. Apple's
   ~44ms last segment) starts at the buffered end and Chrome freezes the
   playhead ~50-70ms short of it, so a strict `currentTime >= lastSegStart`
   never opens -> `endOfStream()` never fires -> MediaSource stays `'open'` ->
   frozen. The slack fires EOS just before the freeze.

2. `recover-end-stall` (new DOM behavior) — on `waiting`, if the MediaSource is
   `'ended'`, duration is finite, and the playhead is within
   `endStallNudgeWindow` (0.2s, config) of the reachable buffered end, nudge
   `currentTime = duration` to force native `ended`. Event-driven, no poll
   (`waiting` fires at ~0ms). Inert for live and clean-ending streams.

Composed in both engines. ADR:
internal/decisions/end-of-stream-av-skew-recovery.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-13 14:37:46 -07:00

Video.js v10

package-badge discord-badge pnpm

Modern, modular, and composable media player framework for Web and React.

🚧 Beta - close to stable. Experimental adoption in real projects. 🚧

Video.js v10 is close to stable. Try it out in real projects and share your feedback 🙏.

Timeline

  • Technical Preview (Complete): Initial showcase for Demuxed.
  • Alpha (Complete): See milestone
  • Beta (Complete): See milestone
  • GA (Mid 2026): See milestone ← WIP
  • Video.js (End of 2026): Video.js core/contrib parity and supported plugins migrated.

Documentation

If you'd like to get started and learn more, you can find our documentation on our website:

Community

If you need help with anything related to Video.js 10, or if you'd like to casually chat with other members:

Contributing

We'd love for you to join our community channels above and give us feedback! Feedback on any of the following would help us:

  • Player skin designs
  • Component structures and APIs
  • Package structure and exports
  • Repo, workspace, contributor guides

Please see our contributing guide for getting set up locally and making code or docs changes.

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

S
Description
[Beta] Video.js v10 - open source media player framework for Web and React.
Readme
57 MiB
Languages
TypeScript 81.9%
MDX 10.9%
CSS 2.6%
Astro 2.5%
JavaScript 1.2%
Other 0.8%