Menu
Products
Products
Video Hosting
Upload and manage your videos in a centralized video library.
Image Hosting
Upload and manage all your images in a centralized library.
Galleries
Choose from 100+templates to showcase your media in style.
Video Messaging
Record, and send personalized video messages.
CincoTube
Create your own community video hub your team, students or fans.
Pages
Create dedicated webpages to share your videos and images.
Live
Create dedicated webpages to share your videos and images.
For Developers
Video API
Build a unique video experience.
DeepUploader
Collect and store user content from anywhere with our file uploader.
Solutions
Solutions
Enterprise
Supercharge your business with secure, internal communication.
Townhall
Webinars
Team Collaboration
Learning & Development
Creative Professionals
Get creative with a built in-suite of editing and marketing tools.
eCommerce
Boost sales with interactive video and easy-embedding.
Townhall
Webinars
Team Collaboration
Learning & Development
eLearning & Training
Host and share course materials in a centralized portal.
Sales & Marketing
Attract, engage and convert with interactive tools and analytics.
"Cincopa helped my Enterprise organization collaborate better through video."
Book a Demo
Resources
Resources
Blog
Learn about the latest industry trends, tips & tricks.
Help Centre
Get access to help articles FAQs, and all things Cincopa.
Partners
Check out our valued list of partners.
Product Updates
Stay up-to-date with our latest greatest features.
Ebooks, Guides & More
Customer Stories
Hear how we've helped businesses succeed.
Boost Campaign Performance Through Video
Discover how to boost your next campaign by using video.
Download Now
Pricing
Log in
Get a demo
Get Started
VP9 is a way to compress videos for online sharing, and when used with formats like HLS or DASH, it helps control how much data the video uses per second. In setups with protections like Widevine, PlayReady, or FairPlay, rate control keeps the video smooth and secure. From a video view, this means adjusting the bitrate so the stream plays well on different devices without wasting bandwidth. The goal is to balance quality and data use, ensuring protected videos load fast and look clear. By focusing on VP9's rate settings, you make sure the encoding fits these streaming needs. Prerequisites Before implementing Multi-DRM, ensure the following requirements are met: An active DRM license provider account supporting Widevine, PlayReady, and FairPlay (for example, Google Widevine License, Microsoft PlayReady Service, or Multi‑DRM vendors like EZDRM). Encoded video files ready for packaging in fragmented MP4 (fMP4) for DASH and MPEG‑TS or fMP4 for HLS. Access to an encryption and packaging tool such as Shaka Packager, AWS Elemental MediaPackage, or Unified Origin. HTTPS endpoints for license delivery and playback authorization. A DRM‑compatible player that supports Encrypted Media Extensions (for browsers) or native DRM frameworks (for Apple devices). Basic knowledge of adaptive bitrate streaming and manifest configuration. A secure authentication method for license requests, such as a JSON Web Token (JWT) or signed URL. Understanding Multi-DRM in Streaming Workflows Adaptive streaming formats like HLS and MPEG‑DASH divide media into small segments distributed over HTTP. Multi‑DRM extends this model by applying encryption so that playback is allowed only for authorized users. Each platform uses its own DRM technology. Widevine protects playback for Chrome, Android, and Smart TVs. PlayReady secures Windows, Xbox, and some Smart TVs. FairPlay manages playback on Safari, iOS, macOS, and tvOS devices. Multi‑DRM ensures all systems can play the same content through different encryption schemes and license servers while sharing the same underlying source. The foundation of this interoperability lies in Common Encryption (CENC). DASH uses CENC with AES‑CTR mode, while HLS uses SAMPLE‑AES with CBCS mode under FairPlay. Encryption and License Flow In a protected workflow, content encryption occurs offline during packaging, while decryption is performed during playback after successful license validation. Step 1 : Video and audio tracks are encrypted with AES‑128 keys. For DASH streams, encryption uses the CENC standard with AES‑CTR. For HLS with FairPlay, encryption uses SAMPLE‑AES with CBCS. Step 2 : Packaged outputs generate either a DASH manifest (.mpd) or an HLS manifest (.m3u8) that includes encryption metadata. Step 3 : Each manifest references DRM systems through identifiers and initialization data instead of storing decryption keys. Step 4 : During playback, the player sends a license request containing init data to the DRM server. Step 5 : The DRM license server verifies playback rights and responds with a license containing the decryption key. This secure exchange ensures that protected streams cannot be decrypted without proper authorization. Packaging Tools and Setup A packager applies encryption and generates manifest files with DRM signaling. Shaka Packager provides an example for packaging Widevine and PlayReady streams into MPEG‑DASH. Example Command Showing How to Generate a Widevine-Protected DASH Stream : packager \ in=input.mp4,stream=audio,output=audio_encrypted.mp4 \ in=input.mp4,stream=video,output=video_encrypted.mp4 \ --enable_widevine_encryption \ --key_server_url=https://license.widevine-provider.com/cenc/getcontentkey \ --content_id=abcd1234 \ --key=
:key_id=
\ --protection_scheme cenc \ --pssh
\ --pssh
\ --mpd_output manifest.mpd Explanation : This command applies encryption for both Widevine and PlayReady under the same key using CENC. The --pssh flags embed the initialization data necessary for each DRM type. For HLS and FairPlay, packaging uses CBCS encryption. A command from the same tool or another packager could look like this: packager \ in=input.mp4,stream=video,output=encrypted_video_hls.mp4 \ --enable_fairplay_encryption \ --hls_master_playlist_output master.m3u8 \ --protection_scheme cbcs \ --iv
\ --key
:key_id:
\ --hls_key_uri skd://
The encrypted HLS manifest (.m3u8) signals FairPlay information through an EXT‑X‑KEY tag that directs the player to request the key from the FairPlay license server. Integrating with a License Server After encryption and packaging are complete, integrate the outputs with license delivery services. DRM license servers issue playback licenses in exchange for secure, authenticated token requests. The player receives encryption metadata in the manifest, then generates an initialization payload when playback begins. This payload, known as the init data, is sent to the DRM server through a secure POST request. An example of a Widevine license request from Shaka Player in JavaScript is: player.getNetworkingEngine().registerRequestFilter((type, request) => { if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) { request.headers['Authorization'] = 'Bearer ' + playback_token; } }); In your packager configuration or player setup, this URL becomes the license server address. The license server processes this request, verifies the token or entitlement via an API, and returns a binary response containing the decryption key. Shaka Player automatically interprets this license and enables playback. Each DRM type has distinct interaction formats: Widevine and PlayReady return binary license responses in protobuf or XML. FairPlay uses an SPC ( Server Playback Context ) and CKC ( Content Key Context ) exchange handled through the Safari ResourceLoaderDelegate or AVFoundation. Manifest Configuration The manifest communicates which DRM systems are used. DASH manifests include
elements with identifiers and PSSH values.
Base64WidevinePSSH
Base64PlayReadyPSSH
HLS Manifests for FairPlay Rely on a Key Declaration Entry : #EXT-X-KEY:METHOD=SAMPLE-AES,URI='skd://fairplay-key-id',KEYFORMAT='com.apple.streamingkeydelivery' When the player loads the manifest, it chooses the matching DRM system based on device and browser support, requests the appropriate license, and decrypts the stream in real time. Player Integration Players handle license retrieval and decryption using Encrypted Media Extensions on browsers or native DRM frameworks on mobile and smart TVs. A proper configuration maps each DRM system to its license server endpoint. Example : player.configure({ drm: { servers: { 'com.widevine.alpha': 'https://widevine-license-url', 'com.microsoft.playready': 'https://playready-license-url' } } }); Apple devices handle FairPlay DRM natively through AVFoundation. The app sets up a license request by responding to the resource loader delegate, constructing an SPC from the playback context, and sending it to the license server, which returns a CKC to enable playback. When playback begins, the player detects supported DRM systems, selects the right license URL, and starts streaming securely. Token Security Production environments never expose license endpoints directly. Instead, every playback session is secured through short‑lived tokens or signed URLs issued by the application backend. Each token contains claims such as user identity, video ID, and expiration time. When playback is requested, the player attaches the token to every DRM license request, ensuring access is granted only to authorized viewers. Here’s a minimal example of a token-secured playback request: fetch('https://drm.example.com/get-license', { method: 'POST', headers: { 'Authorization': 'Bearer ' + playback_token, 'Content-Type': 'application/octet-stream' }, body: licenseRequestPayload }) .then(res => res.arrayBuffer()) .then(license => player.setLicense(license)); The DRM server validates the token before returning the license. If the token has expired or is invalid, the request fails, and playback is denied. Using this method keeps session control centralized and prevents unauthorized playback. Testing and Validation After the encryption and license integration, validate playback across device types. Host the encrypted files on a CDN or secure web server and test playback using standard DRM‑enabled players. To confirm Widevine and PlayReady compliance, load the DASH manifest in Shaka Player or Bitmovin Player on browsers like Chrome, Edge, or Firefox. Successful playback with key retrieval logs in developer tools indicates correct configuration. For FairPlay validation, open the HLS manifest in Safari or an iOS app. Verify that HTTPS certificates and CORS headers are correctly configured for license requests. Testing should include: Bandwidth simulation to confirm adaptive bitrate performance. License latency checks to ensure responses occur within sub‑second timing. Device compatibility tests for Smart TV and mobile platforms. If playback initiates seamlessly on all supported environments, the multi‑DRM setup is correctly implemented and production‑ready.