Airi

Empezar

Airi te da las claves para cifrar tu vídeo y decide quién puede reproducirlo. Tú no montas ningún servidor.

Qué hace Airi #

Un vídeo protegido con DRM está cifrado. Para verlo, el reproductor tiene que pedir una licencia a un servidor, y ese servidor decide si se la da y con qué condiciones. Airi es esas dos piezas: te entrega las claves de cifrado y opera el servidor de licencias.

Lo que tú pones es el vídeo y el cifrado. Lo que nosotros ponemos es todo lo demás: las claves, la negociación con cada sistema DRM, y las reglas de reproducción que tú defines.

El recorrido completo

  1. Pides una clave para tu contenido. Te devolvemos un keyId (público) y una key (secreta).
  2. Cifras el vídeo con esa clave usando tu empaquetador — Shaka Packager, Bento4, MediaConvert, lo que uses.
  3. Publicas el manifiesto apuntando a nuestro servidor de licencias.
  4. Un espectador le da al play. Su reproductor pide la licencia, y nosotros decidimos si se la damos según tus reglas.

Solo pagas por lo que usas

$0.01 por cada clave que creas y $0.009 por cada reproducción que autorizamos. Sin cuota mensual: recargas saldo y se descuenta.

Tus primeros pasos #

Hay dos formas de usar Airi, y puedes mezclarlas: desde el panel, o desde la API.

Desde el panel

  1. Crea tu cuenta en airi.live. Solo hace falta un correo — te enviamos un código, sin contraseñas.
  2. Recarga saldo. Sin saldo no se pueden crear claves.
  3. Pulsa Proteger un contenido. Eliges las calidades y el nivel de seguridad en lenguaje llano, y te damos las claves.

Desde la API

En Desarrolladores creas una credencial. El token se muestra una sola vez, así que guárdalo al momento.

Crear una clave para la calidad HD
curl -X POST https://kms.airi.live/v1/keys \
  -H "Authorization: Bearer kms_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "contentId": "pelicula-1234",
    "drmSystems": ["widevine", "playready", "fairplay"],
    "track": "HD"
  }'
Respuesta
{
  "success": true,
  "created": true,
  "contentId": "pelicula-1234",
  "keyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "key": "y3Jl...",      // secreta: no la publiques
  "iv": "8f2a...",
  "track": "HD",
  "licenseUrls": {          // a donde apuntar el reproductor para ESTA clave
    "widevine":  "https://drm.airi.live/v2/widevine",
    "playready": "https://drm.airi.live/v2/playready",
    "fairplay":  "https://drm.airi.live/fairplay"
  },
  "drmSystemsData": [ /* pssh por sistema */ ]
}

Repetir la misma petición es seguro

Si vuelves a pedir la clave del mismo contentId y la misma calidad, te devolvemos la que ya existe con created: false, y no se te cobra. Tu pipeline puede reintentar sin miedo a duplicar nada.

Cifrar el vídeo #

Con el keyId y la key ya puedes cifrar. Este es un ejemplo con Shaka Packager; la idea es la misma en cualquier otro empaquetador.

Shaka Packager, en modo cbcs (compatible con FairPlay)
packager \
  in=video-1080.mp4,stream=video,output=video-hd.mp4 \
  in=audio.mp4,stream=audio,output=audio.mp4 \
  --enable_raw_key_encryption \
  --keys label=HD:key_id=a1b2c3d4e5f67890abcdef1234567890:key=<key en hex> \
  --protection_scheme cbcs \
  --mpd_output pelicula.mpd \
  --hls_master_playlist_output pelicula.m3u8

Sobre --protection_scheme: la elección entre cenc y cbcs determina qué dispositivos podrán reproducir tu vídeo, y no se puede cambiar sin volver a cifrar. Está explicado en Sistemas DRM.

Apuntar al servidor de licencias #

El último paso es decirle al reproductor a dónde pedir la licencia. Cada sistema DRM habla su propio protocolo, así que cada uno tiene su URL. Vienen en licenseUrls con cada clave que creas — cópialas de ahí y no tendrás que pensar en esto:

Shaka Player
player.configure({
  drm: {
    servers: {
      'com.widevine.alpha': 'https://drm.airi.live/v2/widevine',
      'com.microsoft.playready': 'https://drm.airi.live/v2/playready',
      'com.apple.fps': 'https://drm.airi.live/fairplay'
    }
  }
});

A partir de ahí, cada petición de licencia pasa por nuestras reglas: comprobamos que la clave sea tuya, aplicamos el nivel de seguridad que hayas definido para esa calidad, y registramos la reproducción para que la veas en el panel.

Y ahora qué #

  • Conceptos — qué es un contentId, por qué hay una clave por calidad y cuándo necesitas rotación.
  • Sistemas DRM — en qué se diferencian Widevine, PlayReady, FairPlay y WisePlay, y cuáles necesitas.
  • Cifrar tu vídeo — un script listo para ejecutar que hace todo el camino, en Node o en Python.
  • Reproductores — configurar Shaka Player y Video.js, y qué mirar cuando algo no reproduce.
  • Referencia de la API — todos los endpoints, con ejemplos que puedes ejecutar.