DRM

What Is Multi-DRM? How It Works, Systems, and How to Implement It

21 min read
DRM
Reading Time: 15 minutes

No single DRM system plays on every device your viewers own.

Google’s Widevine covers Android and Chrome. Apple’s FairPlay covers iPhone, iPad, Apple TV, and Safari. Microsoft’s PlayReady covers Windows, Xbox, and a long tail of smart TVs and set-top boxes.

Ship only one and you’ve broken playback for a large slice of your audience. Multi-DRM is the answer to that fragmentation: one encrypted copy of your video, three license paths, every device covered.

Here’s how the packaging and licensing flow works, what the cenc and cbcs schemes actually change, what it costs, and how to tell whether your project needs full multi-DRM or whether simpler access controls will do.

What Is Multi-DRM?

Multi-DRM is a content protection approach that encrypts a single video asset once and serves license requests from multiple DRM systems, so the same protected file plays on Android, Apple, Windows, and smart TV devices without re-encoding.

Three things define it:

  • The video is encrypted with Common Encryption, a standard that lets different DRM systems decrypt the same bytes
  • The decryption keys never live in the player; they’re delivered per session from a license server that checks who you are and what your account is entitled to
  • The player picks its DRM system at runtime based on what the device supports, so the origin never needs a separate copy per platform

Multi-DRM exists because the three vendors built their systems as hardware-backed trust chains tied to their own platforms. Google can’t sign Apple’s silicon, and Apple won’t run Google’s decryption module.

Common Encryption was the compromise: agree on the cipher and the file format, disagree on everything else.

Widevine FairPlay PlayReady
Owner Google Apple Microsoft
Primary devices Android, Chrome, Android TV, most smart TVs iPhone, iPad, Mac, Apple TV, Safari Windows, Edge, Xbox, many smart TVs and STBs
EME key system com.widevine.alpha com.apple.fps com.microsoft.playready
Encryption schemes cenc and cbcs cbcs only cenc and cbcs
Usual manifest DASH (and HLS) HLS DASH (and HLS)

Why One DRM System Isn’t Enough

Each DRM system is native to a platform and effectively absent everywhere else. A Widevine-only setup locks out every iPhone. A FairPlay-only setup locks out every Android phone and every Chrome browser on the planet. PlayReady-only leaves you with Windows and a handful of TVs.

The gaps aren’t small. Android and iOS together make up nearly all mobile watch time, and connected TVs split between Widevine-first platforms like Android TV and Roku and PlayReady-first platforms like older Samsung and LG sets.

Covering “most” devices with one system still means a measurable share of your paying subscribers hit a black screen.

There’s a second reason beyond reach. Content licensing agreements often name the DRM systems you must support and the security level each one has to hit. If you’re carrying studio catalog, live sports, or anything with a windowing deal attached, the contract decides your DRM stack for you.

Multi-DRM isn’t a nice-to-have in those deals. It’s a delivery requirement.

The DRM Systems in a Multi-DRM Stack

Most multi-DRM deployments run three systems. A few add a fourth for specific markets.

Widevine (Google)

Widevine reaches further than the other two. It ships in Chrome, Firefox, and Edge on desktop, in every Android device, in Android TV, and in most smart TV platforms including Samsung’s newer Tizen models and LG’s webOS.

Google charges no per-license fee for Widevine itself, though you still pay whatever your DRM vendor charges to run the license server.

Widevine grades devices by security level, which controls what resolution you’re allowed to send. Our Widevine DRM guide breaks down the L1, L2, and L3 tiers in detail.

FairPlay Streaming (Apple)

FairPlay covers iOS, iPadOS, macOS, tvOS, and Safari. It’s the only way to run hardware-backed protection on Apple hardware, and Apple doesn’t license it to anyone else.

It’s also the most administratively awkward of the three. You request a FairPlay Streaming deployment package through the Apple Developer program, generate a certificate and private key, and host an application-level key server that wraps content keys before returning them.

That certificate process is usually the slowest step in a multi-DRM rollout. Our Apple FairPlay walkthrough covers the certificate flow and the SPC/CKC exchange.

PlayReady (Microsoft)

PlayReady runs on Windows, Edge, Xbox, and a large installed base of smart TVs and operator set-top boxes. It grades hardware by security level too: SL150 for development, SL2000 for software-backed protection, SL3000 for hardware-backed protection in a trusted execution environment.

Its footprint on TVs is shifting. Samsung has marked PlayReady as deprecated on newer Tizen models in favor of Widevine, but the installed base is large enough that dropping it costs you real households.

WisePlay and regional systems

WisePlay (formerly Huawei DRM) matters if you ship to Huawei devices, which have no Google Play Services and therefore no Widevine. Some DRM vendors bundle it at no extra cost. Outside China and specific operator deals, most services skip it.

System Reach Hardware tier Per-license cost to you
Widevine Android, Chrome, Firefox, most smart TVs L1 (TEE) Free from Google; vendor fees apply
FairPlay All Apple platforms + Safari Apple silicon-backed Apple Developer account ($99/yr) + vendor fees
PlayReady Windows, Xbox, many TVs and STBs SL3000 (TEE) Vendor fees; some vendors bill it separately
WisePlay Huawei devices Hardware-backed Usually bundled

How Does Multi-DRM Work?

The workflow splits into two halves that run at different times. Packaging happens once when the asset is prepared. Licensing happens every time somebody presses play.

  1. Generate content keys. Your key management service creates one or more AES-128 content keys and a key ID for each. Premium setups use separate keys per resolution tier so an SD key leak doesn’t expose the 4K rendition.
  2. Encrypt and package. The packager encrypts the media segments with the content key and writes the result as fragmented MP4 segments. Key exchange between the packager and the DRM service runs over CPIX, or over AWS’s SPEKE API if you’re packaging inside AWS Media Services.
  3. Write DRM signaling into the manifests. The packager embeds a pssh box (Protection System Specific Header) for each DRM system in the init segment and references the key IDs in the manifest. DASH carries ContentProtection elements; HLS carries #EXT-X-SESSION-KEY and #EXT-X-KEY tags.
  4. Player negotiates a key system. On playback, the player calls the Encrypted Media Extensions API and asks the browser which key systems it supports. Chrome answers com.widevine.alpha, Safari answers com.apple.fps, Edge answers com.microsoft.playready. Native apps skip EME and talk to the platform DRM API directly.
  5. Player builds a license request. The Content Decryption Module reads the matching pssh box, produces an opaque license challenge, and hands it back to the player as a message event.
  6. Your backend authorizes the session. The player posts the challenge to the license server with an auth token attached. Your entitlement service checks the subscription, the geography, the device count, and the rental window, then tells the DRM service which rights to grant.
  7. License server returns a license. The DRM service signs a license containing the content key, encrypted to that specific CDM instance, plus the policy: expiry time, offline permission, HDCP requirement, resolution cap.
  8. CDM decrypts inside a secure path. The CDM unwraps the key and decrypts frames in isolated memory. On L1 and SL3000 hardware the decrypted frames never touch application memory at all; they go straight to the GPU.

Step 3 is the part that makes it “multi.” One set of encrypted segments carries pssh boxes for all three systems, so the device picks its own path through the same file.

CENC vs cbcs: The Encryption Schemes

Common Encryption, standardized as ISO/IEC 23001-7, defines the protection schemes that make one file readable by several DRM systems. Two of them matter in practice.

cenc uses AES-128 in counter mode (CTR) and encrypts every byte of the sample payload. It was the original scheme, and it’s what Widevine and PlayReady shipped with for years.

cbcs uses AES-128 in cipher-block-chaining mode with pattern encryption, typically encrypting one 16-byte block out of every ten and leaving the rest in the clear. Apple built FairPlay around it. Pattern encryption cuts decryption load, which matters on low-power TV chipsets.

The two schemes aren’t interchangeable at the file level. A cenc-encrypted segment can’t be decrypted by a FairPlay client, full stop. For years that forced two encrypted copies of every asset: cenc for DASH and cbcs for HLS.

That’s no longer the default. Widevine and PlayReady both added cbcs support, so a single cbcs-encrypted CMAF package now serves all three systems. Storage drops by roughly half, CDN cache hit rates improve because there’s one set of bytes instead of two, and the packaging pipeline gets simpler.

cenc cbcs
Cipher mode AES-128 CTR AES-128 CBC with pattern
Coverage Full sample Pattern (commonly 1 in 10 blocks)
Widevine Yes Yes (modern clients)
PlayReady Yes Yes (PlayReady 4.0+)
FairPlay No Yes
Best for Legacy DASH-only device support Single-encrypt CMAF for all three

The catch is old hardware. Smart TVs and set-top boxes from before roughly 2017 may only handle cenc. If your audience includes a long tail of legacy devices, you’ll run both schemes and route by user agent.

Multi-DRM Packaging: DASH, HLS, and CMAF

DRM and manifest format are tangled together because the systems grew up in different ecosystems.

MPEG-DASH can signal several DRM systems in one manifest. Each ContentProtection element carries a system ID and an optional pssh, so a single MPD advertises Widevine and PlayReady side by side and the player takes whichever it can use.

HLS handles DRM through #EXT-X-KEY and #EXT-X-SESSION-KEY tags. It’s the only format Apple devices will accept for FairPlay, and it can also carry Widevine and PlayReady when the segments are cbcs-encrypted CMAF.

CMAF is what makes the single-package approach possible. Both HLS and DASH can point at the same fragmented MP4 segments, so you store one set of media files and two small text manifests.

Three packaging shapes cover almost every real deployment:

  • One CMAF package, cbcs, both manifests. The 2026 default. Lowest storage, lowest complexity, covers every modern device.
  • Two packages, cenc for DASH and cbcs for HLS. The safe fallback when legacy TVs and older set-top boxes are a meaningful part of your audience.
  • HLS only, FairPlay only. Fine if you ship Apple-exclusive content, and nothing else.

Your adaptive bitrate ladder sits underneath all of this. DRM encrypts the renditions. It doesn’t change how many you produce or how the player switches between them.

Security Levels and Output Protection

Getting a license isn’t the end of it. The license carries policy, and the field with the most consequences is the resolution cap tied to the device’s security level.

Widevine grades devices L1, L2, and L3. L1 means both decryption and media processing happen inside a trusted execution environment. L3 means the decryption runs in software, which is where Chrome on desktop sits. Studios typically allow 4K and HD only on L1 and cap L3 at 480p or 540p.

PlayReady uses SL150, SL2000, and SL3000, with SL3000 as the hardware-backed tier. FairPlay doesn’t publish tiers the same way. Apple’s hardware handles the secure path natively, and policy gets expressed through HDCP requirements and rental rules instead.

Output protection is the other half. A license can demand HDCP on the display link, which blocks capture over an HDMI splitter, and can forbid analog output entirely.

Set these too aggressively and you’ll generate support tickets from people with older monitors. Set them too loosely and your content shows up on pirate feeds in original quality.

Rights holders write these caps into contracts, so the policy usually gets handed to you rather than chosen. Build your entitlement service so the caps are data, not code.

Advantages of Multi-DRM

Protected playback on every device

The headline benefit. One packaging run reaches Android, iOS, Chrome, Safari, Edge, Xbox, Roku, Fire TV, Android TV, and the smart TV installed base, all with hardware-backed protection where the device supports it.

One encrypted copy instead of three

Common Encryption means you don’t store or deliver a separate protected asset per platform. With cbcs CMAF, one set of segments serves everything. Storage bills drop and the CDN caches one object instead of several.

Access to premium content deals

Studios, sports leagues, and broadcasters won’t license their catalog to a service that can’t demonstrate multi-DRM with hardware-level security. Having the stack in place is what gets you into the room.

Per-session, per-device policy

The license gets issued at playback time, so you can express rules that static encryption can never handle: concurrent stream limits, 48-hour rental windows, offline download expiry, device registration caps, resolution tied to subscription tier.

Real deterrence against casual redistribution

DRM won’t stop a determined attacker with a camera pointed at a screen. It does stop the easy attacks: browser extensions that rip HLS playlists, download managers, screen recorders on protected surfaces.

Pair it with watermarking and takedown workflows and you raise the cost of video piracy enough to matter.

Offline playback that expires

Download-and-watch is a DRM feature, not a player feature. Persistent licenses let you hand a viewer a decryptable copy that stops working when the rental window closes.

Disadvantages and Challenges of Multi-DRM

Three vendors means three trust chains to maintain

You’re integrating with Google, Apple, and Microsoft at once, each with its own certificates, renewal cycles, and support process.

A certificate that quietly expires on one system takes down playback for a third of your audience while the other two keep working, which makes the outage harder to spot.

The testing surface is enormous

Playback bugs in DRM are device-specific and firmware-specific. A stream that works on a 2023 Samsung TV can fail on the 2019 model over a pssh parsing quirk. Real coverage needs a physical device lab or a cloud device farm, and that’s an ongoing cost, not a one-time one.

It adds latency to the first frame

Every protected session costs an extra round trip: key system negotiation, license request, license response, CDM initialization. Budget 200 to 600 milliseconds on top of your normal startup, more on cold CDN cache. Preloading the license during the title screen is the usual mitigation.

Costs recur and scale with playback volume

License requests are metered. A service with heavy channel-surfing behavior can generate several license requests per viewing session, and the bill tracks that rather than your subscriber count.

It doesn’t stop analog capture

Nothing in the DRM chain prevents a camera pointed at a screen. Screen-capture recordings are lower quality but still redistributable. If leak-source attribution matters, forensic watermarking does a job DRM can’t.

Building it yourself is a poor trade

Running your own Widevine and PlayReady license servers means becoming a licensee, passing security audits, and maintaining key servers that rights holders will inspect. Self-hosted multi-DRM commonly runs five figures in setup plus a meaningful monthly operational load, and the result is rarely better than a managed service.

That’s the shape of the trade-off. Here’s the practical side: how to wire multi-DRM into a streaming stack, what it costs, and how to tell whether your project needs it.

How to Implement Multi-DRM

1. Decide whether you need DRM at all

Start here, because the answer is often no.

If you’re protecting internal training video, webinars, or user-generated content, signed URLs and token-based authentication give you most of the practical benefit at a fraction of the complexity. DRM earns its cost when you’re carrying licensed content, running pay-per-view streaming, or contractually obliged to it.

2. Pick a managed multi-DRM vendor

Unless you’re operating at the scale of a national broadcaster, buy this. Managed vendors hold the Widevine and PlayReady licenses, run the key servers, and keep certificates current.

Compare them on four things:

  • Which DRM systems are included, and whether FairPlay costs extra
  • CPIX or SPEKE support for your packager
  • License request pricing at your projected volume
  • Whether they support offline and live workflows or VOD only

3. Set up your streaming infrastructure

DRM sits on top of a working delivery pipeline: ingest, transcode to an ABR ladder, package to CMAF, deliver over a CDN, play back in a DRM-capable player. Building that layer is where most of the engineering months go, and it has nothing to do with content protection.

That’s the part LiveAPI handles. You get RTMP and SRT ingest, instant encoding into adaptive bitrate renditions, HLS output, delivery across Akamai, Cloudflare, and Fastly, and an embeddable HTML5 player, all from a few API calls.

On the protection side, LiveAPI gives you password protection, geo-blocking, and domain whitelisting. That’s enough access control for gated content, member video, and internal distribution, with no DRM vendor in the loop. If your content licensing does require Widevine, FairPlay, and PlayReady, you pair a multi-DRM service with that delivery stack rather than rebuilding the stack itself.

4. Wire the packager to the key service

Configure your packager to fetch keys over CPIX or SPEKE and write pssh boxes for every system you support. A typical shaka-packager invocation for single-encrypt cbcs CMAF looks like this:

packager \
  'in=video_1080p.mp4,stream=video,init_segment=v/init.mp4,segment_template=v/$Number$.m4s' \
  'in=audio.mp4,stream=audio,init_segment=a/init.mp4,segment_template=a/$Number$.m4s' \
  --protection_scheme cbcs \
  --enable_widevine_encryption \
  --key_server_url "https://license.example.com/cenc" \
  --content_id "$CONTENT_ID_HEX" \
  --signer "your-signer-name" \
  --aes_signing_key "$SIGNING_KEY" \
  --aes_signing_iv "$SIGNING_IV" \
  --generate_static_live_mpd \
  --mpd_output out/manifest.mpd \
  --hls_master_playlist_output out/master.m3u8

Check the output before you go further. The init segment should contain a pssh box per system, and the manifests should reference the same key IDs.

5. Build the entitlement layer

The DRM vendor issues licenses. Your backend decides who deserves one.

Put a service in front of the license endpoint that checks the session token, the subscription state, the device count, and the geography, then returns the policy the DRM service should apply. Keep the policy in configuration so a change to a rights deal doesn’t require a deploy.

6. Configure the player

Browser players negotiate through EME. Shaka Player handles all three systems from one configuration block:

player.configure({
  drm: {
    servers: {
      'com.widevine.alpha': 'https://license.example.com/widevine',
      'com.microsoft.playready': 'https://license.example.com/playready',
      'com.apple.fps': 'https://license.example.com/fairplay'
    },
    advanced: {
      'com.widevine.alpha': {
        videoRobustness: 'HW_SECURE_ALL',
        audioRobustness: 'HW_SECURE_CRYPTO'
      }
    }
  }
});

player.getNetworkingEngine().registerRequestFilter((type, request) => {
  if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) {
    request.headers['Authorization'] = `Bearer ${sessionToken}`;
  }
});

For HLS-only delivery in Safari, hls.js falls back to native playback and you handle the FairPlay SPC/CKC exchange through the webkitkeyneeded path. On Android, ExoPlayer takes a DrmSessionManager with the Widevine UUID and your license URL.

7. Test across real devices

Build a matrix that covers all three license paths on real hardware:

  • Desktop browsers: Chrome and Firefox on Windows and macOS, Safari on macOS
  • Mobile: Safari on iOS, Chrome on Android
  • TV and console: one Samsung TV, one LG TV, a Roku, a Fire TV stick, an Xbox

Then check three behaviors. HD should play only on hardware-backed devices. L3 clients should get the capped rendition instead of an error. Expired licenses should fail cleanly rather than hanging on a black screen.

8. Monitor license traffic in production

Track license request volume, error rates by key system, and time-to-first-frame with DRM enabled versus disabled. A spike in one system’s error rate is usually a certificate problem or a firmware rollout, and both are things you want to catch before support does.

Multi-DRM vs Other Content Protection

DRM is the heaviest tool available, and plenty of projects reach for it when something lighter would do.

Method Protects against Doesn’t stop Complexity Good for
Signed URLs / token auth Link sharing, hotlinking Anyone who downloads the segments Low Gated content, member videos
AES-128 (HLSe) Casual segment scraping Key extraction from the manifest Low Internal video, light protection
Geo-blocking + domain lock Out-of-territory and off-site playback Anyone in-territory Low Rights windows, embed control
Forensic watermarking Nothing at playback time Any playback; it identifies leaks after Medium Screeners, pre-release, sports
Multi-DRM Ripping, downloading, screen capture on protected surfaces Camera-pointed-at-screen capture High Licensed catalog, premium OTT

Most services end up layering. Token auth on the manifest, geo rules at the edge, DRM on the segments, watermarking on high-value titles. Our overview of DRM-protected content covers where each layer fits.

How Much Does Multi-DRM Cost?

Managed multi-DRM prices in two shapes: a monthly platform fee plus a per-license-request charge, or an all-in bundle with a license allowance.

Published entry pricing gives a useful floor. EZDRM’s published rates list Widevine, PlayReady, and FairPlay at $99.99 per month each with a $99.99 setup fee and 10,000 licenses included, and bundle Widevine, PlayReady, FairPlay, and WisePlay at $299.99 per month with 20,000 licenses.

Per-request pricing at retail commonly lands in the $0.01 to $0.05 range, dropping under a cent on committed-volume contracts.

Add the pieces that aren’t on the vendor invoice:

  • Apple Developer Program, $99 per year, required for the FairPlay certificate
  • Packaging compute, if you’re adding a second encryption pass for legacy cenc support
  • Device lab or cloud device farm, for the test matrix
  • Engineering time, typically 2 to 6 weeks for a first multi-DRM integration on an existing pipeline, and considerably more if the pipeline doesn’t exist yet

Self-hosting is the expensive path. Becoming a direct Widevine and PlayReady licensee, running your own key servers, and passing rights-holder security review commonly runs well into five figures up front plus ongoing operational cost, and it only pencils out at very large scale.

Do You Need Multi-DRM?

Work through these. Two or more yes answers and multi-DRM is probably the right call.

  • Are you licensing content from a studio, league, or distributor that names DRM in the contract?
  • Do you sell individual titles, rentals, or premium subscriptions where a leaked copy is direct lost revenue?
  • Do you need to cap concurrent streams or registered devices per account?
  • Do you offer offline downloads that must expire?
  • Do you need to serve 1080p or 4K under a contractual hardware-security requirement?
  • Are you building an OTT platform that will pitch rights holders in the next year?

If the answer to all of them is no, spend the effort on signed URLs, geo rules, and delivery reliability instead.

A viewer who can’t play your video because of a DRM misconfiguration costs you more than a viewer who could theoretically rip it.

Multi-DRM FAQ

Do I really need all three DRM systems?
If you want protected playback on every major platform, yes. Widevine plus FairPlay covers mobile and desktop browsers, which is enough for a mobile-first service. PlayReady becomes necessary once smart TVs, Xbox, and operator set-top boxes are part of your distribution.

Is multi-DRM the same as AES-128 encryption?
No. AES-128 in HLS encrypts segments but delivers the key over HTTPS with no hardware protection and no per-session policy, so anyone who can read the manifest can fetch the key. DRM wraps the key to a specific device’s decryption module and attaches rules to it.

Can I use one encrypted file for all three systems?
Yes, if you encrypt with cbcs and package as CMAF. Modern Widevine and PlayReady clients both decrypt cbcs, and FairPlay accepts nothing else. Older TVs and set-top boxes may still need a separate cenc package.

What’s the difference between Widevine L1 and L3?
L1 runs decryption and media processing inside a trusted execution environment, so decrypted frames never reach application memory. L3 does it in software. Rights holders usually permit HD and 4K only on L1 and cap L3 at SD.

Does multi-DRM work for live streaming?
Yes. The packager rotates content keys on an interval and the player requests a new license when the key changes. Live adds key rotation and low-latency constraints, but the licensing flow is identical to VOD, including for live-to-VOD recordings.

How much latency does DRM add to playback start?
Roughly 200 to 600 milliseconds, covering key system negotiation, the license round trip, and CDM initialization. Requesting the license before the user presses play removes most of it.

Can DRM be cracked?
Individual CDM implementations have been compromised, mostly at the L3 software tier. The vendors respond with CDM revocation and forced updates. Hardware-backed L1 and SL3000 have held up far better, which is why studios require them for high resolutions.

Do I need a DRM vendor if my video platform already encrypts content?
Depends on what “encrypts” means. Password protection, signed URLs, and AES-128 are access control, not DRM, and they won’t satisfy a studio contract. Check whether the platform issues Widevine, FairPlay, and PlayReady licenses or just restricts who can reach the file.

Getting Multi-DRM Into Production

Multi-DRM stopped being exotic years ago. The pieces are standardized, the vendors are mature, and single-encrypt cbcs CMAF has removed most of the packaging pain that used to make it a months-long project.

What’s left is mostly integration work: wire the packager to a key service, put an entitlement check in front of the license endpoint, configure the players, and test on real hardware.

The larger job is everything underneath it. Ingest, transcoding, ABR packaging, CDN delivery, and a player that works on every screen take far longer to build than the DRM layer sitting on top.

LiveAPI gives you that foundation through an API: RTMP and SRT ingest, instant encoding, HLS output up to 4K, multi-CDN delivery, an embeddable player, plus geo-blocking, domain whitelisting, and password protection built in. Pair it with a managed DRM vendor when your content deals require it, or ship with the built-in access controls when they don’t. Get started with LiveAPI and put your streaming pipeline together in days.

Join 200,000+ satisfied streamers

Still on the fence? Take a sneak peek and see what you can do with Castr.

No Castr Branding

No Castr Branding

We do not include our branding on your videos.

No Commitment

No Commitment

No contracts. Cancel or change your plans anytime.

24/7 Support

24/7 Support

Highly skilled in-house engineers ready to help.

  • Check Free 7-day trial
  • CheckCancel anytime
  • CheckNo credit card required

Related Articles