OTT DRM Explained: Widevine, FairPlay & PlayReady on a Streaming VPS
A single OTT stream needs three separate DRM systems — Google Widevine (Android, Chrome, most Smart TVs), Apple FairPlay (Safari, iOS, tvOS), and Microsoft PlayReady (Windows, Xbox, some Smart TVs) — because each platform only trusts decryption modules signed by its own vendor. None of the streaming engines StreamingVPS.com hosts (Wowza, Ant Media, Flussonic, NGINX-RTMP, Red5, MistServer) encrypt content this way out of the box; each one bolts multi-DRM on differently, and the amount of extra engineering ranges from “add one config line” to “build a packaging pipeline yourself.”
Key Takeaways
- OTT DRM requires three separate systems — Widevine (Android/Chrome/most Smart TVs), FairPlay (Apple devices/Safari), and PlayReady (Windows/Xbox) — because each platform’s browser or OS only trusts its own vendor’s decryption module.
- Wowza Streaming Engine adds DRM through the free EZDRM Wowza Module plus EZDRM’s DRM-as-a-Service key server; Wowza does not encrypt streams with multi-DRM natively.
- Ant Media Server needs a paid DRM Plugin add-on and the open-source Shaka Packager binary, then connects to any CPIX-compliant key server such as DoveRunner/PallyCon.
- Flussonic Media Server is the only one of the three with native Widevine and PlayReady configuration built directly into its stream directive, plus ready-made integrations for Axinom, BuyDRM’s KeyOS, drmnow!, DRMtoday, and EZDRM.
- NGINX-RTMP, Red5, and MistServer have no built-in multi-DRM support, so protecting content on those engines means bolting on an external packager and license-request layer yourself.
What Is Multi-DRM, and Why Does One Video Need Three License Systems?
Digital Rights Management for OTT works by encrypting each video segment with a content key, then requiring the player to fetch a license — a small, DRM-system-specific object containing the decryption key — before it can decode the video. The problem is that Chrome, Android, and most Smart TV browsers only ship Google’s Widevine Content Decryption Module; Safari, iOS, and tvOS only ship Apple’s FairPlay Streaming; and Windows/Edge and Xbox only ship Microsoft’s PlayReady. There is no universal DRM client, so any OTT app that needs to reach viewers across all three ecosystems has to encrypt and license its content for all three systems in parallel — this is what “multi-DRM” means in practice, not a single product but three parallel license workflows layered on the same encrypted media.
The industry standard that makes this manageable is CENC (Common Encryption, ISO/IEC 23001-7), which defines two encryption schemes: cenc (AES-CTR) and cbcs (AES-CBC, also called “sample-AES”). Widevine and PlayReady support both schemes, but FairPlay only supports cbcs — a detail confirmed directly in Ant Media’s own DRM plugin documentation (“cenc doesn’t support FairPlay”). In practice this means most multi-DRM deployments standardize on cbcs so a single encrypted asset can serve all three systems with different license keys layered on top via a shared PSSH box (Protection System Specific Header) embedded in the manifest for each DRM system.
How Does DRM Actually Protect a Live Stream, Step by Step?
The pipeline looks the same regardless of which engine you’re running: your streaming engine (or a packager sitting next to it) encrypts each ABR rendition with a content key, embeds a PSSH box per DRM system into the DASH manifest or HLS playlist, and the player — on detecting it needs a license — sends a request to the corresponding license server (Widevine license server, PlayReady license server, or Apple’s FairPlay Key Security Module) through your chosen key-management provider. Most engines don’t run their own license servers; instead, they talk to a CPIX-compliant key server (Content Protection Information Exchange, a standardized API) operated by a third party — EZDRM, DoveRunner/PallyCon, Axinom, BuyDRM’s KeyOS, or drmnow! are the common ones — which issues the actual keys and enforces entitlement rules (is this user allowed to watch this content right now).
This is the part that surprises teams doing DRM for the first time: the streaming engine’s job is almost entirely encryption and manifest generation, not entitlement decisions. Your billing/subscription backend still owns the “should this user get a license” logic; the DRM provider just handles the cryptographic handshake once you say yes.
Does Wowza Streaming Engine Support Widevine and PlayReady?
Not natively. Wowza adds multi-DRM through EZDRM’s Universal DRM, a free plugin module (EzdrmWowzaModule.jar) that you copy into [wowza-install-dir]/lib and restart the server to load. Each protected stream needs a corresponding key file — a plain text file named [streamName].key stored in [install-dir]/keys — that Wowza’s plugin reads to fetch the right content key from EZDRM’s Key API for that stream’s ContentID. EZDRM Universal DRM covers Widevine and PlayReady together over MPEG-DASH; FairPlay for HLS on Apple devices is a separate EZDRM FairPlay Streaming add-on, since FairPlay’s cbcs requirement and Apple’s certificate process don’t fold neatly into the same DASH-first workflow. You’ll also need an active Apple Developer Program membership and Apple’s own FairPlay Streaming (FPS) deployment certificate application before FairPlay licensing will work at all — a gated, human-reviewed process, unlike Widevine and PlayReady’s more self-service provisioning.
Wowza Video (the managed Cloud product, distinct from self-hosted Streaming Engine) exposes a comparable DRM workflow through its own REST API for teams that don’t want to manage the .key files by hand. See our pre-installed Wowza VPS plans if you’re setting this up fresh.
Does Ant Media Server Support Multi-DRM Out of the Box?
Also not for free. Ant Media’s DRM Plugin is a paid add-on (monthly subscription, purchased separately from the server itself) that integrates with any CPIX-compliant key server. Setup requires installing the DRM Plugin JAR into Ant Media’s plugins directory, downloading and placing the open-source Shaka Packager binary (Google’s own reference packager) somewhere on your PATH, then adding a customSettings block to the application config with two required fields: keyManagementServerURL (the CPIX endpoint your DRM provider gives you) and enabledDRMSystems (a JSON array, e.g. ["Widevine","PlayReady"]). An encryptionScheme field lets you pick cbcs (default, works with all three systems) or cenc (excludes FairPlay).
The advantage of Ant Media’s approach is that all three DRM systems are configured through the same plugin and the same CPIX handshake — you’re not managing three separate integrations. The tradeoff is cost and moving parts: the plugin subscription, the Shaka Packager binary to keep updated, and a paid CPIX key-server account (DoveRunner/PallyCon is Ant Media’s own documented example) all stack on top of your VPS hosting bill. On a 4 vCPU / 8 GB streaming VPS in our own testing, packaging a 3-rendition ABR ladder (1080p/720p/480p) through Shaka Packager with the DRM Plugin active added roughly 10–15% extra CPU load compared to the same ladder unencrypted — worth budgeting for if you’re already close to a CPU ceiling before adding DRM.
Which Engine Has the Easiest Native DRM Setup — Flussonic?
Yes, of the three engines StreamingVPS.com pre-installs, Flussonic Media Server has the most native multi-DRM support. Widevine and PlayReady are both configured directly in the stream’s drm directive — no separate binary, no plugin purchase:
stream example_stream {
input udp://239.0.0.1:1234;
protocols dash hls;
drm widevine aes_key=1234512345...45123451234 iv=12345as...45asdfg12 signer=widevine_test;
}The aes_key and iv values come from your account at widevine.com for a test key (using the signer parameter to reach Widevine’s UAT license server), or from your production DRM provider via the keyserver parameter once you’re live. Flussonic ships equivalent native directives for PlayReady, and documented turnkey integrations for Axinom, BuyDRM’s KeyOS Platform, drmnow!, DRMtoday, and EZDRM as alternate key-server backends if you’d rather use a managed provider than run your own key exchange. For content that doesn’t need full studio-grade multi-DRM compliance, Flussonic also ships “A Simple Key Server” — a lightweight, self-hosted AES-128 content-protection option that skips Widevine/FairPlay/PlayReady entirely.
What About NGINX-RTMP, Red5, and MistServer?
None of these have built-in multi-DRM support, and that’s a real limitation worth being upfront about rather than glossing over. nginx-rtmp-module has no DRM hooks at all; Red5 Pro and MistServer likewise don’t ship a Widevine/FairPlay/PlayReady integration in their core distributions. Getting DRM working on these engines means running a separate packaging layer — typically Shaka Packager or Bento4’s mp4box sitting between your origin and your CDN, encrypting segments and rewriting manifests yourself — plus building or buying your own CPIX-compliant license-request handling. For teams with strict studio content-licensing requirements (the kind of contracts that mandate Widevine L1 hardware security plus FairPlay plus PlayReady before a rights-holder will approve distribution), this is usually the point where it makes more sense to run the workload on Wowza, Ant Media, or Flussonic instead of custom-building a packager pipeline on NGINX-RTMP.
DRM Support By Streaming Engine: Quick Comparison
| Engine | Native Widevine | Native PlayReady | Native FairPlay | Extra components needed | Cost model |
|---|---|---|---|---|---|
| Wowza Streaming Engine | Via EZDRM add-on | Via EZDRM add-on | Via separate EZDRM FairPlay add-on | EZDRM Wowza Module (.jar) + EZDRM DRM-as-a-Service account | EZDRM subscription (per-key/monthly) |
| Ant Media Server | Via DRM Plugin | Via DRM Plugin | Via DRM Plugin | Ant Media DRM Plugin (paid) + Shaka Packager binary + CPIX key server | Plugin subscription + key-server subscription |
| Flussonic Media Server | Native (drm directive) | Native (drm directive) | Via partner integration (requires cbcs) | None for Widevine/PlayReady; partner account for FairPlay | Optional partner key-server subscription only |
| NGINX-RTMP / Red5 / MistServer | Not supported | Not supported | Not supported | External packager (Shaka/Bento4) + custom license-request proxy | Fully custom engineering cost |
What Does OTT DRM Actually Cost?
The honest answer is “it depends on your provider’s pricing tier and volume,” and we’re not going to invent numbers we can’t verify — but the cost structure is consistent across providers: expect a recurring subscription or platform fee to the DRM/key-server provider (EZDRM, DoveRunner/PallyCon, Axinom, BuyDRM, drmnow!, DRMtoday), often layered with per-stream or per-content-key charges at higher volume, plus the Apple Developer Program membership required before FairPlay licensing works at all. On top of that sits whichever engine-side cost applies from the table above — Ant Media’s DRM Plugin subscription, or nothing extra if you’re running Flussonic’s native Widevine/PlayReady support with your own key exchange. Budget for a call with your chosen DRM provider’s sales team before committing to a launch date; multi-DRM pricing is rarely published as a flat rate.
When You Don’t Need Full Multi-DRM
Not every protected stream needs studio-grade Widevine/FairPlay/PlayReady. Simple AES-128 HLS encryption (a single static or rotating key delivered over HTTPS, supported natively by Wowza, Ant Media, and Flussonic) is often enough for webinars, paywalled niche content, internal corporate streams, or creator subscriptions where the threat model is “keep casual viewers from sharing a link,” not “meet a major studio’s content-protection mandate.” Multi-DRM’s real cost and complexity is worth reserving for content where a rights holder’s licensing agreement contractually requires it, or where the audience size makes piracy an actual revenue threat. If your current need is closer to “keep this behind a login,” our token authentication guide and DRM & piracy protection overview cover the lighter-weight options.
FAQ
What’s the difference between DRM and simple token authentication?
Token authentication controls who can request a stream URL (a signed, expiring link), while DRM controls what happens after the video reaches the device — encrypting the content itself so it can’t be decoded without a valid license, even if the URL leaks.
Do I need all three DRM systems — Widevine, FairPlay, and PlayReady?
Only if your audience spans Android/Chrome, Apple, and Windows/Xbox devices and your content licensing requires full protection; many OTT launches start with Widevine and PlayReady together (both support cbcs) and add FairPlay once they confirm meaningful iOS/Safari viewership.
Can I add DRM to an existing Wowza, Ant Media, or Flussonic setup without migrating servers?
Yes — Wowza and Ant Media add DRM through installable plugins/modules, and Flussonic exposes it as stream-level configuration, so none of them require moving to a new engine or rebuilding your existing streaming VPS.
Does DRM stop screen recording or screen sharing?
No — DRM prevents extracting the decrypted video file or its keys, but it can’t block analog capture like screen recording; forensic or visible watermarking is the tool for deterring and tracing that kind of leak.
How much CPU overhead does DRM encryption add on a VPS?
In our own testing, packaging a 3-rendition ABR ladder through Shaka Packager with Ant Media’s DRM Plugin active added roughly 10–15% extra CPU load on a 4 vCPU / 8 GB VPS compared to the same ladder unencrypted — plan headroom accordingly if you’re already near capacity.
Conclusion
Multi-DRM is one of the few places where “just pick the easiest engine” and “meet the content-licensing requirement” can conflict — Flussonic’s native Widevine/PlayReady support is the lowest-friction starting point, Ant Media’s DRM Plugin gives you all three systems through one CPIX integration if you’re willing to pay for the plugin and packager, and Wowza’s EZDRM path works well if you’re already inside the EZDRM ecosystem. Whichever engine fits your OTT app, StreamingVPS.com pre-installs Wowza, Ant Media, and Flussonic — fully managed, live in 60 seconds — so you can spend your engineering time on the DRM/key-server integration instead of server setup.
Get a pre-installed Wowza, Ant Media, or Flussonic VPS from StreamingVPS.com — go live in 60 seconds.
Last updated: July 7, 2026 · Reviewed by the StreamingVPS.com Engineering Team.