GuideGetting Started
CDN Installation Guide
Load Video.js from jsDelivr and build an HTML video player without installing Video.js packages
Video.js can run directly from browser-ready files on jsDelivr. This HTML-only path does not install Video.js packages: choose a player, load its scripts, and add the generated custom-element markup to your page.
AI Quickstart
Paste this prompt into your coding agent:
Install the Video.js skill: run `npx @videojs/cli agents skills` and follow the steps for the agent you are running in. If you can't run commands, follow the install instructions at https://github.com/videojs/skills instead. Then use the Video.js skill when you work on video or audio in this project. When installation details are needed, run `npx @videojs/cli agents init --method cdn --framework html` to print the version-matched choices and instructions without changing files.Installation options for coding agents
The web Markdown page contains the default installation. Add the query parameters below to its .md URL for a complete, validated variation. From a project or an offline docs bundle, run the CLI command below instead. Both paths use the same installation renderer and only return instructions; they do not modify a project.
This page fixes the installation method to cdn and the framework to html.
npx @videojs/cli agents initQuery parameters
project: Whether to adapt the current project or scaffold a new one. New projects need a named app setup. Values:new,existing. Default: existing.preset: The player configuration and control set. Values:video,audio,live-video,live-audio,background-video. Default: video.skin: The visual skin. Minimal has cleaner surfaces and the same controls as Default. Values:default,minimal,none. Default: default. Applies when preset is not background-video.media: The media source or playback adapter. See the preset compatibility map below. Values:background-video,hls-background-video,cloudflare,dash,hls,html5-audio,html5-video,mux-audio,mux-background-video,mux-video,spotify,tiktok,twitch,vimeo,youtube. Default: the selected preset's first compatible media source.extensions: A comma-separated list of optional player extensions compatible with the selected player. Passnonewhen no extension is needed. Values:none,google-cast,mux-data. Default: mux-data for Mux media; none otherwise (reported as defaulted).source-url: The http:// or https:// media URL placed in the generated player example. Passdemoto choose the Video.js demo source for the selected media explicitly. Default: the Video.js demo source for the selected media (reported as defaulted).package-manager: The command runner used for app setup, packages, Shadcn, and the development server. Values:npm,pnpm,yarn,bun. Default: pnpm. Applies when method is not cdn with template none.template: The app setup and file layout. CDN defaults tononefor an existing page andvitefor a new app. Values:vite,none. Default: none.
Run the command above without flags to see the corresponding CLI flags for every framework.
Decide in this order
- Inspect the project. Read package.json, framework config, and lockfiles to infer the framework, app setup, and package manager. React installs @videojs/react; HTML, Vue, and Svelte install @videojs/html.
- Choose the starting point. Use existing when adapting a compatible project. Use new only when the user wants a new app or the intended workspace has no app. Confirm the choice when the workspace and request do not make it clear.
- Choose the player. Use video unless the request signals another experience: audio, music, or podcasts use audio; a live stream uses live-video or live-audio; a muted, looping decorative video uses background-video. Ask only when those signals conflict.
- Choose the skin. Use default unless the request asks for a minimal, cleaner, or more subtle look, which uses minimal; both contain the same controls. Use none only when the project builds its own controls. Ask only when those signals conflict.
- Choose the media. Infer the adapter from the source when possible. Mux wins for Mux playback URLs: stream.mux.com/<playback-id>.m3u8 or a bare playback ID uses mux-video, mux-audio, or mux-background-video rather than hls. Mux static renditions such as .mp4 or .m4a files use html5-video or html5-audio. Other .m3u8 URLs use hls.
- Choose extensions. Mux Data is included by default for Mux video and audio sources. Add Google Cast when a standard or live video player with a ready-made skin should cast a compatible source. Use none when no extension is needed.
- Choose how to install. This guide uses CDN scripts for plain HTML. Use an existing page when one is available, and scaffold a minimal Vite app only when no app exists.
- Return one explicit plan. Confirm the choices once, then pass every applicable query parameter, including
extensions=nonewhen no extension is needed andsource-url=demowhen there is no media URL yet. Check that Defaulted options says none. Adapt conditional setup steps and existing paths before changing files.
Compatible media sources by preset
video:html5-video,hls,dash,mux-video,vimeo,youtube,cloudflare,tiktok,twitchaudio:html5-audio,mux-audio,spotifylive-video:hls,mux-videolive-audio:mux-audiobackground-video:background-video,hls-background-video,mux-background-video
App setup by framework
html: templatesvite,none
Installation pages
Choose your framework
Choose the JavaScript framework for your project.
Choose your app
Add the player to an HTML page you already have, or create a minimal Vite app for it.
Choose your use case
Choose the ready-made player that is closest to what you are building. Live presets add live-edge controls; background video is muted and loops behind your content.
Choose your media
Choose what the player will play. The CDN page only shows sources with a browser-ready bundle.
Optional. The URL also ends up in your generated code.
Choose your extensions
Add optional behavior to the player. Only extensions that work with your player and media source appear below.
No optional extensions apply to these selections.
Choose how to install
Choose from the installation options available for your selections.
Prepare your app
Create the app in an empty directory, then run the remaining commands from that directory.
Load Video.js
Add these generated module scripts to your page. They register the player, selected skin, media element, and selected extensions.
Add your player
Place this generated markup where the player should appear. It uses the media source you selected above.
Replace the starter page with this generated page. It loads Video.js and renders the player with the media source you selected above.
That’s it! You now have a working Video.js player without installing Video.js packages.
Own the UI
Packaged skins keep their controls and layout inside Video.js. When you need to add, remove, rearrange, or deeply restyle controls, use Shadcn to add the skin source to your project. Its components, layout, styles, and interactions become local files you can change.
