Modular video player library. Use only what you need.
Documentation · Getting Started · Playground
<video src="video.mp4"></video>
import { createPlayer } from "@videts/vide";
import { hls } from "@videts/vide/hls";
import { vast } from "@videts/vide/vast";
const player = createPlayer(document.querySelector("video")!);
player.use(hls());
player.use(vast({ tagUrl: "https://example.com/vast.xml" }));
Explicit setup. No data attributes. No class scanning. No side effects. Web standards first — if the browser can do it, we don't reinvent it.
HTMLVideoElement. Fullscreen API, <track> subtitles, native HLS on Safari.npm install @videts/vide
Package is published as @videts/vide on npm. The project name is Vide.
<div id="player-container">
<video src="video.mp4"></video>
</div>
import { createPlayer } from "@videts/vide";
import { ui } from "@videts/vide/ui";
import "@videts/vide/ui/theme.css";
const player = createPlayer(document.querySelector("video")!);
player.use(ui({ container: document.getElementById("player-container")! }));
See the Getting Started guide for more.
| Stack | Start here |
|---|---|
| Vanilla JS / TS | Getting Started |
| React | React Guide |
| Vue 3 | Vue Guide |
| Svelte 5 | Svelte Guide |
| CDN / No build tool | CDN Guide |
| Migrating from video.js | Migration Guide |
Plugins are explicit opt-in. Import only what you need.
| Plugin | What | gzip |
|---|---|---|
@videts/vide |
Core player | 3.0 KB |
@videts/vide/vast |
VAST 4.2 ads | 7.9 KB |
@videts/vide/vmap |
VMAP scheduling | 8.8 KB |
@videts/vide/hls |
HLS streaming | 1.4 KB |
@videts/vide/dash |
DASH streaming | 1.4 KB |
@videts/vide/drm |
DRM (Widevine, FairPlay, PlayReady, ClearKey) | 2.6 KB |
@videts/vide/ssai |
SSAI (server-side ads) | 2.3 KB |
@videts/vide/omid |
Open Measurement | 1.7 KB |
@videts/vide/simid |
Interactive ads | 2.4 KB |
@videts/vide/vpaid |
VPAID 2.0 ads | 2.1 KB |
@videts/vide/ima |
Google IMA SDK bridge | 3.4 KB |
@videts/vide/ui |
Headless UI | 5.7 KB |
@videts/vide/ui/theme.css |
Default theme | 4.6 KB |
HLS and DASH plugins require
hls.js(160 KB gzip) and220 KB gzip) as peer dependencies. Sizes above are vide wrapper code only.dashjs(
See the plugin documentation for usage examples and configuration options.
MIT