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
- Pides una clave para tu contenido. Te devolvemos un
keyId(público) y unakey(secreta). - Cifras el vídeo con esa clave usando tu empaquetador — Shaka Packager, Bento4, MediaConvert, lo que uses.
- Publicas el manifiesto apuntando a nuestro servidor de licencias.
- 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
Tus primeros pasos #
Hay dos formas de usar Airi, y puedes mezclarlas: desde el panel, o desde la API.
Desde el panel
- Crea tu cuenta en airi.live. Solo hace falta un correo — te enviamos un código, sin contraseñas.
- Recarga saldo. Sin saldo no se pueden crear claves.
- 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.
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" }'
{ "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
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.
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
La clave viaja en base64, el empaquetador la quiere en hexadecimal
key e iv en base64 porque así los define el estándar CPIX. La mayoría de empaquetadores los esperan en hexadecimal. Conviértelos antes, o el vídeo se cifrará con una clave que no es la tuya y nadie podrá verlo.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:
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.