Freedam

Developers · Video embeds

A single iframe to play any video, anywhere you allow it

Generate an embed snippet for any video asset in two clicks. Restrict playback to your own domains, control autoplay, loop, captions, and start time, and revoke the embed any time without touching the asset.

The snippet

Drop it into a CMS, a portal, or an intranet page

The embed is a normal iframe. It loads a signed playback URL, plays an HLS stream sized for the viewer, and inherits the permissions the browser already grants iframes.

Generate it interactively from the asset page, or programmatically by creating a share through the API and asking for an embed snippet.

Generated snippet

<iframe
  src="https://{workspace}.freedam.io/share/SHARE_TOKEN/embed/ASSET_GAID?autoplay=1"
  width="640"
  height="360"
  frameborder="0"
  allow="autoplay; encrypted-media; picture-in-picture"
  allowfullscreen
></iframe>
Sizes

Three sensible presets, plus a custom size

Pick a preset for the common cases or enter your own width and height for bespoke layouts.

Small

480 × 270

Medium

640 × 360

Large

854 × 480

Custom

Your dimensions

Options

Five toggles, set as URL parameters

Append the parameters you want. Defaults are sensible: controls on, autoplay off, loop off.

  • autoplayStart playback as soon as the iframe loads. Forces muted, since browsers block unmuted autoplay.
  • mutedStart muted, but let the viewer un-mute.
  • loopRestart from the top when the video reaches the end.
  • controlsShow the player controls. On by default; pass controls=0 to hide.
  • startBegin playback at a specific second. Useful for highlighting a moment inside a longer clip.

Example: link to second 42 of a longer clip.

https://{workspace}.freedam.io/share/SHARE_TOKEN/embed/ASSET_GAID?start=42
Domain restriction

Only the sites you allow can play the video

Each embed carries a list of domains where it can play. Set it per share, or set a tenant-wide default that every embed inherits. Nothing prevents copy-pasting the snippet, but the moment it lands on a site that is not on the list, the browser refuses to render it.

The mechanism is the standard Content-Security-Policy: frame-ancestors header. Every browser respects it. There is no script you have to add, no integration to maintain.

Precedence

The first match wins.

  1. 1

    Per-share allowlist

    Set on the share that backs the embed. Highest priority.

  2. 2

    Tenant default allowlist

    Set once in tenant settings. Inherited by every embed without an override.

  3. 3

    No restriction

    If neither is set, the embed plays anywhere. Fine for public content, intentional for everything else.

What the embed gives you

Six things you don't have to build yourself.

Domain allowlist per share

Restrict an embed to a specific list of domains. Anyone trying to embed it elsewhere gets a blocked iframe, enforced by the browser via CSP frame-ancestors.

Or a tenant-wide default

Set one domain allowlist for the whole library. Every embed inherits it unless a share overrides it.

Long-lived, auto-renewing

Each embed is backed by a share that lasts a year and renews automatically when it’s within thirty days of expiring.

Signed playback URLs

The iframe loads a signed URL. You can revoke a single embed without touching the underlying asset.

Adaptive streaming

Playback uses HLS, so the right resolution is served for the viewer’s connection without you tuning anything.

Picture-in-picture & fullscreen

The iframe is configured with the right permissions for autoplay, encrypted media, picture-in-picture, and fullscreen, on every browser that supports them.

Developers · Video embeds

Embed video where it matters, on the sites you choose

Take the demo for a spin and generate an embed snippet for one of the sample videos.