Как реализовать DRM в HTML5

Я хочу внедрить DRM в видео HTML5 (EME). Я знаю, что он поддерживается в современных браузерах:

  • https://en.wikipedia.org/wiki/Encrypted_Media_Extensions
  • https://w3c.github.io/encrypted-media/

И я знаю, что есть инструменты и услуги, которые я могу использовать:

  • https://support.uplynk.com/tut_embedding_the_uplynk_player_3.html
  • https://www.wowza.com/products/capabilities/streaming-content-security
  • https://www.intertrust.com/products/drm-system/livestream/
  • https://bitmovin.com/cenc-widevine-drm/
  • https://www.html5rocks.com/en/tutorials/eme/basics/

Я хочу привести пример:

  • https://demo.castlabs.com/ (играйте с большим бэком-кроликом, гладкая потоковая передача: невозможно загрузить, а URL-адрес можно использовать один раз)

Должен ли я использовать службу, или я могу реализовать клиентскую и серверную стороны как на моем собственном сервере? Если я смогу реализовать клиентскую и серверную стороны, как я могу это сделать?
Я использую PHP (laravel) на стороне сервера.

Обновление # 1
Я хочу, чтобы иметь возможность зашифровать мои видео на моем сервере (с помощью любого инструмента) и расшифровать его, когда браузер хочет его воспроизвести, и запретить его загрузку обычными пользователями.

Если вы хотите поддерживать основные широко используемые DRM, в это время Widevine, PlayReady или FairPlay вам нужен либо сервер с несколькими DRM, либо служба.

Если вам просто нужна базовая защита, вы можете использовать AES-шифрование или явно с DASH.

Они не столь безопасны, но иногда достаточно хороши для определенных нужд.

Вы можете использовать ffmpeg и openssl для создания зашифрованного HLS-потока AES. Документация ffmpeg ( http://ffmpeg.org/ffmpeg-all.html#Options-34 ) включает этот пример скрипта:

 #!/bin/sh BASE_URL=${1:-'.'} openssl rand 16 > file.key echo $BASE_URL/file.key > file.keyinfo echo file.key >> file.keyinfo echo $(openssl rand -hex 16) >> file.keyinfo ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \ -hls_key_info_file file.keyinfo out.m3u8 

Вы также можете использовать mp4Box ( https://gpac.wp.imt.fr/mp4box/encryption/common-encryption/ ) для создания основных понятных DASH-шифров:

MP4Box -crypt drm_file.xml movie.mp4 -out movie_encrypted.mp4

Информация drm включена в файл drm_file.xml и объясняется по ссылке выше.