Video.js is a web video player built from the ground up for an HTML5 world. It supports HTML5 video and modern streaming formats, as well as YouTube, Vimeo, and even Flash (through plugins, more on that later).
It supports video playback on desktop and mobile devices. The project was started mid 2010, and now has hundreds of contributors and is used on over 450,000 websites.
Plays “traditional” file formats such as MP4 and WebM, but also supports adaptive streaming formats such as HLS and DASH. There’s even a special UI for live streams!
Easy to style
Video.js is designed to be a reliable and consistent base to build on top of. The player looks great out of the box, but can be easily styled with a little bit of extra CSS.
100s of plugins
When you need to add additional functionality, a well-documented plugin architecture has your back. The community has already built hundreds of skins and plugins that you can install, such as Chromecast, IMA, even VR.
Your video should work everywhere your app does. The team makes an effort to support every modern browser we can, including desktop and mobile.
Built by the community, used by the professionals
The advanced example includes the playlist plugin, along with some useful details such as what all of the player properties are, and what events have fired and how often.
The folks who help make this happen
Brightcove is the main sponsor of the project, employing many of the core members and investing thousands of engineering hours every year in Video.js and Video.js plugins.
The Brightcove Player is built on Video.js and used on thousands of video websites, ensuring Video.js can handle the most professional use cases.
When to use Video.js over the <video> element?
Looks good everywhere with CSS-based Skins
Looks different in every browser
|Adaptive Streaming (adjusting to the viewer’s bandwidth)|
HLS supported everywhere. DASH supported everywhere but iOS Safari.
HLS and DASH not playable in Chrome or Firefox by default.
|Social Video Platforms|
Play Youtube, Vimeo, and more with added plugins.
|Browser API Inconsistencies|
Makes them disappear