Page MenuHomePhabricator

Update the video player to video.js v10
Open, LowPublic

Description

https://videojs.org is preparing to release v10 of their framework. Once it releases, we should update our version to this new version.

It provides better skinnability, and a new approach on how to build a player.
Some calculations for our player put it around ~28% smaller transfer size.

┌──────────────┬──────────────────┬──────────────────┐
│     Part     │        v8        │  v10 (minimal)   │
├──────────────┼──────────────────┼──────────────────┤
│ Vendor JS    │ 74.5 KB (260 KB) │ 47.0 KB (182 KB) │
├──────────────┼──────────────────┼──────────────────┤
│ Vendor CSS   │ 13.0 KB (54 KB)  │ 9.9 KB (53 KB)   │
├──────────────┼──────────────────┼──────────────────┤
│ TMH glue JS  │ 17.8 KB (67 KB)  │ 20.0 KB (73 KB)  │
├──────────────┼──────────────────┼──────────────────┤
│ TMH glue CSS │ ~3.5 KB (15 KB)  │ ~1 KB (3.7 KB)   │
├──────────────┼──────────────────┼──────────────────┤
│ ≈ total (gz) │ ~109 KB          │ ~78 KB           │
└──────────────┴──────────────────┴──────────────────┘

I have done some exploratory work already, and it is a big rewrite. I've added both their minimal and default skins, but they are also good bases to completely write your own skin (this is why its so much work though).

Screenshot 2026-07-21 at 13.27.07.png (2,578×1,990 px, 2 MB)

Screenshot 2026-07-21 at 13.24.00.png (2,578×1,990 px, 2 MB)

Event Timeline

TheDJ updated the task description. (Show Details)

It seems that the entire structure of video.js has a few significant changes for us

  1. ES modules, this isn't easily compatible with our ResourceLoader methodology. We can either use the module approach, or we will likely need to use some transpile pipeline.
  2. ES2022 features with use of things like #private. While support is now at 94%... that's still a pretty big gap that we are creating, especially if we were to move to MPEG-DASH or HLS (for which pure html5 playback is not possible either). Transpiling might be an option.
  3. Haven't been able to figure out translations yet.