Request access
Video infrastructure for education

Upload once. Stream every lesson, protected, everywhere.

WireVoD turns course recordings into adaptive, DRM-protected streams. Per-title GPU encoding, signed delivery from Cloudflare's edge, and a player SDK built for long-form lessons, all behind one API.

  • HLS v7
  • CMAF fMP4
  • H.264 + AAC
  • 4 s segments
  • Widevine
  • PlayReady
  • FairPlay
  • cbcs
publish-lesson.sh
# 1. Create the asset (DRM on for paid courses)
curl -X POST https://api.wirevod.online/v1/assets \
  -H "X-API-Key: $WIREVOD_KEY" \
  -d '{"title":"Lecture 4 — Fourier series","drm":true}'

# 2. Open a resumable upload (up to 100 GiB)
curl -X POST https://api.wirevod.online/v1/uploads \
  -H "X-API-Key: $WIREVOD_KEY" \
  -d '{"asset_id":"6f1c…","size_bytes":2147483648}'
# → PUT each part straight to storage, then /complete

# 3. Mint a short-lived session for a signed-in student
curl -X POST https://api.wirevod.online/v1/playback/sessions \
  -H "X-API-Key: $WIREVOD_KEY" \
  -d '{"asset_id":"6f1c…","ttl_seconds":3600}'
# → urls.manifest, urls.entitlement → WirePlayer
How it works

One pipeline from raw recording to protected playback

Every upload goes through the same audited path. You call four endpoints; the platform handles analysis, encoding, packaging, keys and delivery.

  1. 01Resumable

    Upload

    Clients PUT parts straight to storage with presigned URLs. Interrupted uploads resume from the parts already stored.

  2. 02Per title

    Analyse

    The source is probed and measured for spatial and temporal complexity to decide the ladder and bitrates.

  3. 03GPU

    Encode

    H.264 renditions are encoded on GPUs with a fixed 2 s GOP, then validated for duration and keyframe cadence.

  4. 04CMAF

    Package

    Renditions are packaged as HLS with 4 s fMP4 segments, encrypted with cbcs when the asset is protected.

  5. 05Edge

    Deliver

    Signed, expiring sessions are verified at the edge; segments are cached once and shared by every viewer.

  6. 06WirePlayer

    Play

    The player handles adaptive quality, DRM licensing and QoE telemetry: startup, stalls and errors.

Per-title encoding

A ladder shaped by the content, not a fixed table

A slide deck with a talking head and a lab demo with constant motion don't need the same bitrates. WireVoD analyses each source and builds its own rendition ladder before a single frame is encoded on GPUs.

  • Content analysis first. Spatial and temporal complexity decide each rung's bitrate within a 400–8000 kbps envelope.
  • No wasted rungs. Candidates from 1080p down to 144p, never above the source resolution, never upscaled.
  • Validated before publish. Duration, keyframe cadence and packaging are checked; a failed check never reaches students.
How per-title encoding works →
Illustrative ladderssame duration, different content

Slides + talking head

  1. 1080plow
  2. 720plow
  3. 480plow
  4. 360plow

Lab demo, high motion

  1. 1080phigh
  2. 720phigh
  3. 480pmid
  4. 360pmid
  5. 240plow

Bar length shows relative bitrate. Actual ladders are computed per upload.

Multi-DRM

Protect paid courses without running a license server

One encrypted package serves Chrome, Edge, Firefox, Android and Apple devices. Your backend decides who may watch; WireVoD turns that decision into a license that expires with the session.

  • Single CMAF cbcs package for Widevine, PlayReady and FairPlay: one encode, one copy in storage.
  • Keys never stored. Content keys come from the key service at packaging time; only key ids are kept.
  • Short-lived licenses. Entitlement tokens live minutes, licenses end with the playback session and can't be persisted.
How DRM works on WireVoD →
  1. Your backendChecks enrollment, calls POST /v1/playback/sessions
  2. WirePlayerExchanges the session for an entitlement at urls.entitlement
  3. CDMRequests a license with the entitlement, directly from the DRM provider
  4. RevocationDELETE /v1/playback/sessions/:id stops new segments and licenses
Delivery

Signed sessions, shared edge cache

Every manifest and segment URL carries a signed, expiring session. Verification is one signature check at the edge, with no database lookup, and all viewers of a lesson share the same cached segments.

  • Private by default. Nothing plays without a session your backend minted.
  • Revocable. Kill a leaked link; it stops working everywhere within minutes.
  • Cache-friendly. Segments are immutable and cached by object, not by viewer.
Delivery and playback →
GET segment, second viewer
GET /v1/play/v1.eyJzaWQ…/package/hls/720p/seg_00042.m4s
Host: media.wirevod.online

HTTP/2 200
content-type: video/iso.segment
cache-control: private, max-age=3412, immutable
etag: "9b1f…"
x-cache: HIT
Player SDK

A player that knows what a lesson needs

WirePlayer handles sessions, DRM, quality selection and playback telemetry. Point it at a session from your backend; protected lessons need no extra configuration.

  • Quality you can trust. Adaptive by default, manual rendition pinning for weak connections.
  • QoE built in. Startup time, stalls, quality changes and errors, batched and sent on page exit.
  • Light by default. The DRM module loads only when a lesson is protected.
Player SDK →
lesson.html
<video id="lesson" class="video-js"></video>
<script src="/player/v0.1.0/wireplayer.min.js"></script>
<script>
  const player = new WireVoD.WirePlayer("lesson", {
    source: {
      // your backend mints the session for this student
      session: () =>
        fetch("/api/lessons/4/session")
          .then((r) => r.json()),
    },
  });
  player.on("error", (e) => console.warn(e.code));
</script>
Built for education

For teams that publish courses, not video

Course platforms

Sell courses without sharing raw files. Sessions are scoped to one lesson and one student, and expire on their own.

Universities

Publish lecture archives that hold up on campus Wi-Fi and on mobile data, with low rungs for learners on weak networks.

Test prep and tutoring

Protect premium content with multi-DRM and revoke a learner's access the moment a subscription ends.

EdTech products

An API with resumable uploads, typed errors and an OpenAPI contract, so video is a feature, not a project.

Security

Designed so a leak is small and short-lived

Tenant isolation is tested on every change, credentials are hashed, and every playback credential expires. Read how we handle data, keys and access.

Security overview →
API keys
Hashed at rest, scoped read / write / admin, shown once.
Playback
HMAC-signed sessions, edge-verified, revocable.
Uploads
Direct to storage with presigned, per-part URLs. Bytes never pass through the API.
DRM keys
Derived by the key service; never stored or logged by WireVoD.

Bring your course library

WireVoD is onboarding its first education customers. Tell us about your catalogue and we'll set up your tenant.