Encrypted Media Extensions

Encrypted Media Extensions (EME) play DRM-protected video by relaying messages between a license server and a Content Decryption Module (CDM) inside the browser, such as Widevine (Chrome 1 , Firefox 555 ), PlayReady (Edge) or FairPlay (Safari 10 ), and decrypted frames never reach your script. requestMediaKeySystemAccess(keySystem, configs) picks a CDM and video.setMediaKeys() attaches it; the video's encrypted event supplies init data for session.generateRequest(); the session's message event yields a license request that you fetch() to the DRM vendor; session.update(license) delivers the keys. Only Clear Key (org.w3.clearkey) is mandatory in every browser. In practice, Shaka Player 8,234 , dash.js 5,548 or hls.js 16,957 (Dash.js and hls.js) run this exchange for you.