Custom Embed Player
The AVCaption embed player is a single iframe you drop on your site, your LMS, your membership portal, your blog post — anywhere HTML works. It looks like your brand, plays your video, and respects your access rules.
What you can customize
Brand color — set a single accent color in the dashboard. The progress bar, hover highlights, subtitle accent, and play button all adopt it.
Logo watermark (Premium) — upload a PNG. It renders in a corner of the video at adjustable opacity. Persistent across playback.
Dynamic per-viewer watermark (Enterprise) — render the authenticated viewer’s email, ID, or IP address into the video stream. If a viewer screen-records and posts the video publicly, the watermark identifies them. The text moves periodically to defeat simple crops.
Subtitle style presets — typography, size, background, position, edge style. Pre-built presets (Netflix-style, YouTube-style, anime hardsub-style) or custom.
Player controls — choose which controls show: play/pause, volume, fullscreen, PIP, speed, quality selector, subtitle selector, AirPlay, Cast.
Autoplay / loop / mute defaults — per-video override available via embed URL parameters.
Domain whitelist — specify exactly which domains can host the iframe. Hotlinks from anywhere else get a 403.
The embed code
<iframe
src="https://avcaption.com/watch/{your_embed_token}"
frameborder="0"
allow="autoplay; encrypted-media; fullscreen"
allowfullscreen
loading="lazy"
width="100%"
style="aspect-ratio: 16/9"
></iframe>
That’s it. No JS dependencies, no script tag, no CSS conflict with your site. Renders in any modern browser including Safari, Firefox, Chrome, Edge, mobile browsers, in-app webviews.
URL parameters for fine-grained control
Append query parameters to the iframe src to override defaults per-embed:
?autoplay=1— start playing on load (subject to browser autoplay policies — muted recommended).?muted=1— start muted (required for autoplay on most browsers).?loop=1— restart on end.?start=120— seek to 120 seconds on load.?quality=1080— force a specific variant.?subtitle=vi— preselect a subtitle language.?controls=0— hide all controls (use for kiosk-style embed).?theme=dark|light— override player theme.
Browser support
- Chrome / Edge — full HLS via Media Source Extensions (HLS.js)
- Firefox — full HLS via HLS.js
- Safari (desktop + iOS) — native HLS, no JS library needed
- Mobile Chrome (Android) — full HLS via HLS.js
- iOS 16+ — verified, including PIP, AirPlay, fullscreen
- In-app webviews (LMS apps, hybrid mobile apps) — verified on common platforms
Performance
The player is <60KB minified+gzipped including HLS.js. First-frame paint averages 600-900ms on 4G mobile, sub-300ms on broadband. The CDN-cached master playlist + first segment is the critical path; AVCaption pre-warms both at upload time.
Compared to other platforms
- Wistia / Vimeo OTT — heavier players with more marketing tooling baked in. Slower first-frame, larger JS payload.
- Mux Player — lighter than Wistia, but BYO UI for watermark / branding. AVCaption ships the brand controls in-dashboard.
- JW Player — feature-complete but the JS payload is large, and the SDK requires per-domain license keys.
- Bunny / CF Stream — comparable lightweight players with fewer brand customization controls.
Get started
The fastest test: open a free account, upload one video, set your accent color and logo in Player Settings, copy the iframe from the video detail page, paste into your site. A branded player in under 5 minutes. Common deployments: LMS video hosting, membership site video, agency client video.