Installation
Get started quickly with Video.js by building your first embed code
Video.js is audio and video player components — intentionally built to achieve minimal bundle sizes while providing framework-specific customization and a great viewer experience . Answer the questions below to get started quickly with your first embed code.
Choose your JS framework
Video.js aims to provide idiomatic development experiences in your favorite JS and CSS frameworks. More to come. ( vote )[todo].
Choose your use case
The defaults work well for general website playback. More prebuilt players to come. ( vote )[todo]
Choose skin
Choose how your player looks.
Choose your media source type
Video.js supports a wide range of file types and hosting services. It’s easy to switch between them. ( missing something? )
Select your source
Or upload your media for free to Mux
Install Video.js
<script>
import 'https://cdn.jsdelivr.net/npm/videojs/html/video/player.js';
import 'https://cdn.jsdelivr.net/npm/videojs/html/video/skin.js';
</script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/videojs/html/video/skin.css" />npm install @videojs/htmlpnpm add @videojs/htmlyarn add @videojs/htmlbun add @videojs/htmlnpm install @videojs/reactpnpm add @videojs/reactyarn add @videojs/reactbun add @videojs/reactUse your player
<!--
The PlayerProvider passes state between the UI components
and Media, and makes fully custom UIs possible.
It does not have layout by default (display:contents)
-->
<video-player>
<!--
Skins contain the entire player UI and are easily swappable.
They can each be "ejected" for full control and customization
of UI components.
-->
<video-skin>
<!--
Media are players without UIs, handling networking
and display of the media. They are easily swappable
to handle different sources.
-->
<video src="..."></video>
</video-skin>
</video-player>Create your player
Add it to your components folder in a new file.
import '@videojs/react/video/skin.css';
import { VideoProvider, VideoSkin, Video } from '@videojs/react';
interface MyPlayerProps {
src: string;
}
export const MyPlayer = ({ src }: MyPlayerProps) => {
return (
{/* The Provider passes state between the UI components
and the Media, and makes fully custom UIs possible.
Does not render its own HTML element. */}
<VideoProvider>
{/* Skins contain the entire player UI and are easily swappable.
They can each be "ejected" for full control and customization
of UI components. */}
<VideoSkin>
{/* Media are players without UIs, handling networking
and display of the media.
They are easily swappable to handle different sources. */}
<Video src={src} />
</VideoSkin>
</VideoProvider>
);
};Use your player
import { MyPlayer } from '../components/player';
export const HomePage = () => {
return (
<div>
<h1>Welcome to My App</h1>
<MyPlayer src="https://example.com/video.mp4" />
</div>
);
};That’s it! You now have a fully functional Video.js player. Go forth and play.
Something not quite right? You can submit an issue and ask for help, or explore other support options .