Термин

EME (Encrypted Media Extensions)

Короткое определение

W3C JavaScript-API (Recommendation 2017), позволяющий web-видеоплееру согласовать лицензии с 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-data из зашифрованного медиа, получает license-request, шлёт его license-серверу и передаёт license-response обратно в сессию. После того как сессия лицензирована, плеер appendBuffer-ит зашифрованное медиа в MSE, и CDM расшифровывает его прозрачно для декодера.

EME стандартизовал то, что до 2014 года было per-vendor API. С EME один и тот же код плеера говорит с Widevine в Chrome, PlayReady в Edge, FairPlay в Safari и Widevine на Android – просто согласовав key system. Плееру всё равно нужны платформо-специфичные URL и форматы запросов к license-серверу, но API-поверхность одинакова. Shaka Player и hls.js оба используют EME для всего DRM-воспроизведения.

EME был спорным. Mozilla сопротивлялась поставке в Firefox, EFF критиковала как DRM в веб-стандарте, но к 2017 году все крупные браузеры его поддержали, потому что любой коммерческий OTT требовал. К 2026 EME – устоявшийся стандарт; полемика закончилась, API невидим зрителю. Проблемы совместимости возникают в основном вокруг версий key system (Widevine L1 vs L3, отличия FairPlay между версиями iOS), которые плеер должен обрабатывать.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.