Replies: 10 comments 23 replies
-
|
I am not a JS developer, but as an outsider, it seems like a bad plan to re-write with the intention of React or any currently popular JS framework as a "first class" supported entity; a good abstraction layer that could be used to write a high quality interface to any framework seems like a better plan - but that is an uninformed comment from someone that doesn't know anything about the problem space... |
Beta Was this translation helpful? Give feedback.
-
|
I'd consider determining browser support early in the rewrite, as it will essentially decide who can use VideoJS for what purpose. Chrome 38 and Chrome 53 are the two big cut-off versions for a lot of the set-top / smart TV market and feature set. Making heavy use of polyfills kills the performance of the applications, so polyfilling up to the base level of support makes supporting the best video features difficult on the platforms. I understand that it's a small percentage of users who likely care, but for example: video-dev/hls.js#4939 This made it where hls.js could be running alongside a WebGL rendered application at full framerate, to the rAF loop lagging and killing the overall application UX. Essentially, is VideoJS going to target evergreen desktop / mobile users only? |
Beta Was this translation helpful? Give feedback.
-
|
Can we add missing DASH features https://github.com/videojs/http-streaming/blob/main/docs/supported-features.md ? |
Beta Was this translation helpful? Give feedback.
-
|
MoQ I'd love to see, if not immediate MoQ support, at least some consideration given to having a path for adding MoQ support in the future as that ecosystem begins maturing. There are a lot of unknowns still at the "streaming format" layer, and we'll likely want to support multiple packaging formats, but thinking through the types of affordances developers may want could help us co-evolve implementations. Both moq-js and/or moq-encoder-player could be part of how this comes together. |
Beta Was this translation helpful? Give feedback.
-
|
Having first class support for swappable playback engines could go a long way to help address many of the issues being discussed. Media Chrome's custom media elements and Vidstack's media providers are good examples of this. I know VideoJS has the concept of "techs", but I'm only familiar with them at a high level. Would they be a good candidate for this, or would we need something new? |
Beta Was this translation helpful? Give feedback.
-
|
One issue that keeps coming back when dealing with video-players is the bundle size and download time. |
Beta Was this translation helpful? Give feedback.
-
|
I am developing a player for advanced work with subtitles using this library. I chose it because of the audio track support, because I use it with .mkv files. Sometimes it is very difficult to add a new control, for example, I needed to add another select for the 2nd subtitle track. I understand that this is not rocket science, and it is not that difficult, but if I were asked to recommend a player and the user did not need audio tracks, I would recommend anything that has React supports.
|
Beta Was this translation helpful? Give feedback.
-
|
VideoJS+HLS+multiprogram-multiAudioLang.ts Broadcast streams may contain a channel with 2..N audio tracks (finnish, swedish, visuallyimpaired speech audio tracks). Let player choose a given audio track by PID or Language+Type(normal, visuallyImpaired). Most flexible implementation would be See hardcoded proof-of-concept(mux.js) modification but this level of track selection would be good to have in VideoJS playback level. Click to see code |
Beta Was this translation helpful? Give feedback.
-
|
I have had a look at the latest v10 changes. I build custom features for videojs and other players. This is the required current functions that need to be ported over if possible. Im trying to figure it out right now to port plugin features to it.
There might be others I can't think of right now. plugin system integration would be the first I guess. Ive built a custom nextjs component for videojs which handles unloading correctly and manage property updates that reconfigures the player, loads custom plugins. I cant see how this is possible with the new system. its typescript markup no seperate react components. Are those react components able to be extended or changed to customise the UI and reskin ? It would have to eventually be ported over but I just built it for someone last year they wont want to change it anytime soon. |
Beta Was this translation helpful? Give feedback.
-
|
Is there an actual group to provide input because I'm being ignored on discord. I see you use a markup for HLS to include it in the player. But what about resolving that source ie native HLS for safari or IOS and Dash for others or one HLS for Chrome/Chromecast and another HLS for Safari/Airplay (Chromecast bugs out with sideloaded VTT HLS) , and what about multi format playlists. Its limited to one format and one source. My live offline plugin uses the sources json config with multiple sources, and does round robin source selection fallbacks. Which I use the middleware feature for when recovering from a failure etc It seems json configuration is scrapped requiring to configure as html attributes instead. That makes it harder for dynamically creating the players like the current player. My static site configures the different players with json. putting dynamic configs in the templating as html makes it even harder. There is no way to add custom configs to the internal hlsjs. From what I see :there is no auto loading plugin system and has to be setup and inserted as a custom element even if its not a visual plugin and hopefully have full access and control of the player and patch player methods to override things. The docs only show TS and React setup no Es6 setup. Other than the nextjs project I've done customisations for I dont touch TS because it bundles very bloaty with babel just raw es6 bundles for others to include. The button components all the aria labels are english with no localization system like the current player. So needs a localization system. I've yet to test but it may be possible to extend each button element and re-register the custom element to override the button elements. Like you can do with each component in videojs 8. I have to override some components in some customisations I've done to modify the icons and how the menu functions. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello VideoJS community! 👋
I’m here with an update on VideoJS v10, which will be a major revamp of the project. As we plan and build, the steering committee would love to hear any input on how you’d like to see the project improve or just change moving forward.
May 17, 2025 will be 15 years since I pushed the first version to Github, and wow have we achieved a lot:
It’s been the greatest privilege to be associated with this project and community, both of which have grown much bigger than I ever expected.
Fifteen years is a long time in Javascript land. In 2010 jQuery was just becoming the most popular library, ES5 had limited support, and Internet Explorer 8 was the most used browser. I started VideoJS to help bridge from Flash video to HTML5 video. It was actually first a tutorial on my personal blog, explaining how to build video player controls with HTML/CSS/JS, which I then rolled into a library after some people showed interest.
We’ve of course evolved VideoJS over time (remember that Closure Compiler phase?), but the tools web developers use today are much different from when the project was started. React, Typescript, and Tailwind are the most common defaults compared to the semantic HTML/CSS and vanilla JS of 2010. We think that warrants taking a big step back and considering how the project is and is not still serving the needs of modern JS, and making changes in v10 that will help VideoJS live on another 15 years. Some topics already on our minds include:
Drop a note in the comments if you have thoughts on those or other topics for us to consider. 🙏
Media Chrome, too
With VideoJS I wanted people to customize their players in interesting ways, so myself and other contributors spent a lot of time making the CSS and APIs of VideoJS as accessible as we could within the limits of the platform. While I’m proud of that effort I think it had minimal success, with most VideoJS users opting for the default theme. I assume that’s because not many people had the time or interest to learn VideoJS-specific components.
With that in mind, in 2019 I went on a side quest to build Media Chrome using Web Components. I saw the opportunity to make player components that felt like simple HTML and also could be used across many JS frameworks without framework-specific wrappers. While I’ve been a web component evangelist for many years now and still consider myself one, if you’ve kept up with JS news you know they’re not clearly the silver bullet for cross-framework compatibility that I hoped. While Media Chrome continues to grow in popularity itself, this is a good moment to consider the direction ahead for both projects. I’ve always hoped they’d come together, and that’s the current plan, without specific details yet.
Corporate Shepherding
What makes this a good moment is the recent changes in the VideoJS world. Since 2012, Brightcove has been the Corporate Shepherd of VideoJS after acquiring my previous company, Zencoder. They've provided resources and support that helped the project flourish over the years. With recent organizational shifts, the Technical Steering Committee (TSC) has approved Mux (my current company) stepping in as the new Corporate Shepherd going forward.
I’m of course biased, but this feels like a natural fit as we look toward VideoJS's next chapter. I’ll be happy to spend more of my own time on VideoJS, and so will other player devs on the Mux team. Mux is all about video tech for developers, and we're passionate about supporting open source tools that make video development more accessible. The TSC is excited about this new partnership and the momentum it'll bring as we modernize VideoJS for today's dev landscape.
What’s Next
VideoJS is currently at v8 and we're going to reserve v9 for iterative API-breaking changes while we plan and build v10. Here's the roadmap we’re aiming for:
[UPDATED 2025-11-03]
This timeline gives us enough runway to reimagine VideoJS for modern development while ensuring we don't rush the process. We want to get this right.
Drop comments in this discussion if you have any feedback on where you'd like to see the project go next. 🙏
Cheers!
-heff
Beta Was this translation helpful? Give feedback.
All reactions