Show HN: I took back Video.js after 16 years and we rewrote it to be 88% smaller (videojs.org)

648 points by Heff ↗ HN
What do you do when private equity buys your old company and fires the maintainers of the popular open source project you started over a decade ago? You reboot it, and bring along some new friends to do it.

Video.js is used by billions of people every month, on sites like Amazon.com, Linkedin, and Dropbox, and yet it wasn’t in great shape. A skeleton crew of maintainers were doing their best with a dated architecture, but it needed more. So Sam from Plyr, Rahim from Vidstack, and Wes and Christain from Media Chrome jumped in to help me rebuild it better, faster, and smaller.

It’s in beta now. Please give it a try and tell us what breaks.

62 comments

[ 3.4 ms ] story [ 61.0 ms ] thread
Absolutely love what you and your friends have built. Great work! Will give it a spin.
I'm on the Video.js team, just wanted to say thank you! Means a lot and we'd be eager to hear your experience trying it out. Feel free to drop a GitHub issue or discussion post if you ever get a chance :)
Very nice. Good Luck!

Did the private equity buy the domain videojs.org (did it take control of the project and you somehow regained control after selling) or was this domain (and the project) always under your control?

Very nice! I switched off video.js some time ago because it kept giving me trouble. Looking forward to trying this new version.
Thank you! I’m on the Video.js team, and we’d love for you to try the library out and share your feedback. We’re especially eager to hear from developers who used or tried v8 in the past.

We’re taking a new approach to the library with a lot of new concepts, so your feedback would help us a ton during Beta as we figure out what’s working well and what isn’t.

Looking great. I'll give it a try later on once things stabilize a bit. In the meantime, does anyone know what's going on in this space? Seems to me like a lot is changing over the past year. Eg: react-player new version, taken over by Mux. And also I did realize Video.js is sponsored by Mux. And also seemingly different companies working together.
OP and Mux co-founder here so have all the context on this. A lot has changed. Mux stepped in to help maintain React Player a few years ago. It wasn't getting frequent updates and Mux has a vested interest in the whole OSS player ecosystem (even if we didn't built it) because Mux Video (hosting) is player agnostic, and we get support requests for all of them. @luwes from Mux did the work to get to the new version, while making it possible to use Media Chrome media elements with React Player and consolidating some development efforts. We're still a tiny player team so that was important.

There are no immediate plans to deprecate React Player and I think it holds a special place in the ecosystem, but there will be overlap with video.js v10 and if there's specific features you care about or feel are missing, or if you think we're doing a bad job, please voice it here.

It was a similar story with Vidstack and Plyr, with Mux first sponsoring the projects. That's how I met Rahim and Sam, and how we got talking about a shared vision for the future of players.

can anyone recommend me good, battle-tested "slider" solution for playing videos as well as displaying images from single gallery? ideally capable of handling huge galleries (hundreds of items) with lazy loading
I just happened to try v10 yesterday for HLS and it's looking great so far.
Out of curiousity, why not distribute this as a webcomponent? It's a perfect use case for it - a semantic object that has built in controls / chrome.
Congrats Steve! I haven't touched video since I was at JW Player a million years ago, but I always inspired by the simplicity of video.js (especially the theming).

Hope this new iteration is exceptionally successful.

I was just lamenting the other day about the size of video.js, which is used in my legacy web app, and looking for a way to improve that. Very keen to explore how we could migrate to v10!
Serious question. We currently have this tool in our framework, that we use to play videos from youtube, vimeo, and a whole lot of other sites:

https://github.com/Qbix/Platform/blob/main/platform/plugins/...

We currently already use video.js, and our framework us used all over the place, so we’d be the perfect use case for you guys.

How would we use video.js 10 instead, and for what? We would like to load a small video player, for videos, but which ones? Only mp4 files or can we somehow stream chunks via HTTP without setting up ridiculous streaming servers like Wowsa or Red5 in 2026?

Are there any plans to support other frontend frameworks? If I wanted to use it today in something like svelte how should I go about it?
I am curious, why would anyone pick HLS over Dash in these days?

Granted, my knowledge on the matter is rather limited, but I had some long running streams (weeks) and with HLS the playlist became quite large while with dash, the mpd was as small as it gets.

This is very cool, but I'm confused why the React player is smaller than the HTML player. What's actually in the size comparison there?
This is amazing. We also kind of created a Player context provider and was using it to maintain/mutate player state globally. If its possible to also share any examples related to player events and new way to register plugins in V10, that would also help better understand the overall picture.
Probably not base case but a quick test to replace my audio player (currently using Plyr) turned up the following gaps for me, at least with the out-of-the-box code.

1. No playback rates under 1

2. No volume rocker on mobile

3. Would appreciate having seek buttons on mobile too

4. No (easily apparent) way to add an accent color, stuck with boring monochrome

5. Docs lacked clear example/demo/playground so I wasn't sure what it would look like until implemented

I've never used video.js, and the site/advertising seems to be fairly oriented towards people who have used it or are familiar with it.

I had one question I couldn't answer reading the site: what makes this different from the native html video element?

AFAICT just the transport controls?

> what makes this different from the native html video element?

You don't realize how blessed you are to not know the answer to that question and to never ever have to say "Screw it, I'll just use video.js".

Seeking on the main https://videojs.org/ page doesn't work for me on chromium.

Throws Uncaught (in promise) TypeError: AbortSignal.any is not a function on volume-slider-data-attrs.BOpj3NK1.js

In case anyone's wondering, this website's syntax highlighting color scheme is called "gruvbox", which I quite like but took an embarrassingly long time to track down

https://github.com/morhetz/gruvbox

A seldom appreciated benefit of gruvbox: like vim binds, it's available everywhere. If it has a theming system, somebody ported gruvbox to it.
Just want to say, thanks for the comprehensive blog post and not treating the reader like children. You did a great job explaining the differences & changes. I wish more product/project releases were done this well.