Drop an <iframe>
on any page, point it at /embed?url=…,
and play MKV, HEVC, AV1, HDR, HLS, DASH, multi-audio, embedded subtitles — directly in the browser.
No transcoding. No server processing. 100% local.
This is the full movi-player v0.4.0 web component — 67 attributes, every control, every subtitle format, multi-audio, HDR, VR, ambient mode, encrypted playback. Nothing stripped.
MP4, MKV, WebM, MOV, AVI, FLV, TS, HEVC, AV1, VP9, VVC — demuxed by FFmpeg-WASM, decoded by WebCodecs hardware acceleration with software fallback.
Manifests play via bundled hls.js, dashjs, and Shaka. Auto-quality switching, alternate audio-language tracks, WebVTT and TTML captions all work out of the box.
HDR10, HLG, Dolby Vision — rendered through WebGL2 with display-p3 colour space on Chromium, PQ tone-mapping fallback on browsers without it.
SRT, ASS/SSA (with karaoke + pluggable libass renderer), WebVTT, PGS image subtitles. Per-line styling, delay, edge type, background opacity all adjustable.
Language-aware menu, persistent selection across loads. Stable-volume loudness normalisation. Audio output routing to specific devices via AudioContext.setSinkId.
Ambient mode, chapter markers, resume playback, VR projections (360/180/fisheye/SBS-3D/little-planet), thumbnail scrubber previews, custom controls API.
From zero to a working embedded video in under a minute.
Push the repo to GitHub, connect Cloudflare Pages, get <project>.pages.dev. No build step — it's pure static HTML.
Open /embed?url=… with any direct video link. MP4, MKV, HLS manifest, DASH manifest — anything the player can open.
Copy the iframe snippet from the demo above. Paste it on your blog, docs, Notion page — anywhere that accepts HTML.
One URL, one iframe. The player engine, WASM, and every feature ships from your own Cloudflare Pages origin — no third-party CDN dependency.