Cómo implementar DRM en HTML5

Quiero implementar DRM en video HTML5 (EME). Sé que es compatible con los navegadores modernos:

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

Y sé que hay herramientas y servicios que puedo usar:

  • 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/

Quiero proporcionar este ejemplo:

  • https://demo.castlabs.com/ (jugar big buck bunny smooth streaming: no se puede descargar y la URL es utilizable una sola vez)

¿Tengo que usar un servicio o puedo implementar el lado del cliente y el servidor en mi propio servidor? Si puedo implementar ambos lados del lado del cliente y del lado del servidor, ¿cómo podría hacer eso?
Uso PHP (laravel) en el lado del servidor.

Actualización # 1
Quiero poder encriptar mis videos en mi servidor (a través de cualquier herramienta) y descifrarlos cuando el navegador quiera reproducirlos y evitar que los usuarios normales los descarguen.

Si desea admitir los principales DRM comúnmente utilizados, en este momento Widevine, PlayReady o FairPlay, entonces necesita un servidor o servicio DRM múltiple.

Si solo quieres protección básica, puedes usar encriptación AES o claramente con DASH.

Estos no son tan seguros, pero a veces son lo suficientemente buenos para ciertas necesidades.

Puede usar ffmpeg y openssl para crear una secuencia HLS encriptada AES: la documentación de ffmpeg ( http://ffmpeg.org/ffmpeg-all.html#Options-34 ) incluye este script de ejemplo:

 #!/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 

También puede usar mp4Box ( https://gpac.wp.imt.fr/mp4box/encryption/common-encryption/ ) para crear encriptaciones básicas DASH claras:

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

La información de drm está incluida en drm_file.xml y se explica en el enlace de arriba.

Intereting Posts