Course platforms
Sell courses without sharing raw files. Sessions are scoped to one lesson and one student, and expire on their own.
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.
# 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 → WirePlayerEvery upload goes through the same audited path. You call four endpoints; the platform handles analysis, encoding, packaging, keys and delivery.
Clients PUT parts straight to storage with presigned URLs. Interrupted uploads resume from the parts already stored.
The source is probed and measured for spatial and temporal complexity to decide the ladder and bitrates.
H.264 renditions are encoded on GPUs with a fixed 2 s GOP, then validated for duration and keyframe cadence.
Renditions are packaged as HLS with 4 s fMP4 segments, encrypted with cbcs when the asset is protected.
Signed, expiring sessions are verified at the edge; segments are cached once and shared by every viewer.
The player handles adaptive quality, DRM licensing and QoE telemetry: startup, stalls and errors.
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.
Bar length shows relative bitrate. Actual ladders are computed per upload.
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.
POST /v1/playback/sessionsurls.entitlementDELETE /v1/playback/sessions/:id stops new segments and licensesEvery 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.
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: HITWirePlayer handles sessions, DRM, quality selection and playback telemetry. Point it at a session from your backend; protected lessons need no extra configuration.
<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>Sell courses without sharing raw files. Sessions are scoped to one lesson and one student, and expire on their own.
Publish lecture archives that hold up on campus Wi-Fi and on mobile data, with low rungs for learners on weak networks.
Protect premium content with multi-DRM and revoke a learner's access the moment a subscription ends.
An API with resumable uploads, typed errors and an OpenAPI contract, so video is a feature, not a project.
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 →WireVoD is onboarding its first education customers. Tell us about your catalogue and we'll set up your tenant.