A player, ready to embed.
Adaptive playback, subtitles and playback controls. Bring your video; Mave handles delivery.
DocsMave for developers
Web components for your front end. A REST API, webhooks and a CLI for everything behind it.
Mave handles encoding, adaptive streaming, subtitles and cookieless analytics, hosted in Europe. You keep control over your markup, your styling and your data.
<script
type="module"
src="https://cdn.video-dns.com/npm/@maveio/components/+esm"
></script>
<mave-player embed="ubg502qJu7jOKXP"></mave-player>import { Player } from "@maveio/components/react";
export default function Hero() {
return <Player embed="ubg502qJu7jOKXP" />;
}$ npm install @maveio/components
// Anywhere in your front end
import "@maveio/components";Works in plain HTML, React, Vue, Svelte and any CMS that lets you add HTML.
Native custom elements that work in any framework, or none at all. Configure them with attributes, style them with CSS and extend them with slots.
<mave-player>
Adaptive streaming, subtitles, audio tracks and themes. The heart of every embed.
<mave-clip>
A muted loop that plays when it is visible and pauses when it is not. Use it like an image.
<mave-text>
The transcript of a video on your page, synchronized with playback.
<mave-audio>
Play audio uploads, or the audio tracks of a video, with the same controls.
<mave-upload>
Let people upload from your own site, scoped with a token you sign.
<mave-list>
Show the videos of your space or of a single collection.
<mave-files>
Offer downloads of specific renditions of a video.
Every setting from the Mave dashboard is also an attribute. Set a color, pick the controls, load your own JavaScript theme or place your own HTML inside the player with slots.
Try the settings live<mave-player
embed="ubg502qJu7jOKXP"
color="#2563eb"
theme="/themes/brand.js"
controls="play time seek volume subtitles fullscreen"
subtitles="all"
active-subtitle="original">
<!-- Shown once the video has ended -->
<div slot="end-screen" style="display: none;">
<a href="https://calendar.proton.me/bookings#W2nrb0KzNAx8UP2xDlNshuUZCr3xiWcRvWWaFD4mF5s=">Book a demo</a>
</div>
</mave-player>
Create videos from a URL, organize them in collections and react to what happens with webhooks, instead of polling.
Authenticate every request with a bearer token from the dashboard. Read-only keys can make GET requests; creating, updating and deleting needs a read-write key.
curl -X POST https://api.mave.io/v1/videos \
-H "Authorization: Bearer $MAVE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"collection": "ubg50fRgMoWlCUU",
"input_url": "https://example.com/launch.mp4"
}'
Webhook events
video.createdvideo.uploadedvideo.processingvideo.readyvideo.archivedvideo.unarchivedvideo.deletedSign tokens on your own server, fetch every rendition from a predictable URL and generate frames on the fly.
Add <mave-upload> to your site and sign a JWT scoped to a space, a collection or a single video. Give it an expiry, so you can revoke access at any time.
Make a video private and authorize playback with a JWT signed on your server using a read-only API key. Works with Mave components and your own player.
Signed URLs and JWTsHotlink protection separately configures allowed website domains through CORS.
Hotlink protectionEvery rendition, manifest and poster has a deterministic URL. Use them in your own player or pipeline.
space-ubg50.video-dns.com/2qJu7jOKXP/h264_sd.mp4
Sources
Request any frame of a video as an image. Set the time and size in the URL.
image.mave.io/ubg502qJu7jOKXP.jpg?time=4&width=360
Images
$ brew install maveio/tap/mave
$ mave login
$ mave videos upload ./video.mp4 --wait
$ mave collections create --name "Product videos"
$ mave videos list --format table
Upload files, check your library and create collections with the Mave CLI.
Commands return JSON by default, so the CLI fits in scripts, CI and AI assistants that run terminal commands. Moving from Vimeo? Import your videos with their titles and folders.
CLI documentationMave is open source: Mave Core, the components that power the player and the client-side package that collects viewing data. See exactly what runs on your website, or run it yourself.
The platform itself: dashboard, API, video processing and analytics. Run it on your own infrastructure.
View on GitHub maveio/componentsThe web components behind the player, clip, text, audio and upload.
View on GitHub maveio/dataThe client-side package that collects cookieless viewing data in the browser.
View on GitHubCreate a free account, upload a video and paste the snippet. Or read the docs first.