Термин
EME (Encrypted Media Extensions)
W3C JavaScript API (рекомендация 2017 года), позволяющее веб-видеоплееру согласовывать лицензии с DRM CDM и воспроизводить зашифрованный медиаконтент. Браузерный аналог MSE для контента с защитой DRM.
EME – это мост между JavaScript-плеером и DRM-модулем CDM (Content Decryption Module), предоставляемым операционной системой или браузером. Плеер создаёт `MediaKeys` для выбранной key system (`com.widevine.alpha`, `com.microsoft.playready`, `com.apple.fps`), генерирует `MediaKeySession`, передаёт сессии PSSH init-данные из зашифрованного медиа, формирует запрос на лицензию, отправляет его на сервер лицензирования и возвращает ответ обратно в сессию. После того как сессия получает лицензию, плеер загружает зашифрованное медиа в MSE с помощью `appendBuffer`, и CDM расшифровывает его прозрачно для декодера.
EME стандартизировал то, что до 2014 года было API, зависящим от поставщика. Благодаря EME один и тот же код плеера может работать с Widevine в Chrome, PlayReady в Edge, FairPlay в Safari и Widevine на Android – достаточно лишь согласовать систему ключей. Плееру всё равно потребуются платформенно-специфичные URL и форматы запросов к серверу лицензирования, но интерфейс API остаётся единым. Shaka Player и hls.js используют EME для всей DRM-защиты воспроизведения.
EME вызывал споры. Mozilla отказывалась внедрять его в Firefox, EFF критиковала как DRM в веб-стандарте, но к 2017 году все крупные браузеры его поддержали – потому что любой коммерческий OTT-сервис требовал. К 2026 году EME стал устоявшимся стандартом; дискуссии сошли на нет, API стало незаметно для пользователя. Проблемы совместимости возникают в основном из-за различий между версиями key system (Widevine L1 против L3, различия FairPlay между версиями iOS), которые плеер должен корректно обрабатывать.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.