Streaming Video Cifrato su AVCaption
Ogni video caricato su AVCaption viene cifrato prima di toccare un edge CDN. La decifratura in riproduzione avviene lato client nel browser tramite Web Crypto API, e le chiavi sono consegnate via URL firmati di breve durata legati al tuo dominio.
Questa pagina ripercorre cosa accade davvero a ogni passo.
La pipeline di cifratura
Quando carichi un video su AVCaption:
- Codifica GPU — il file sorgente viene codificato in varianti HLS a bitrate adattivo (360p, 540p, 720p, 1080p, 4K) con NVIDIA NVENC.
- Segmentazione — ogni variante viene tagliata in segmenti HLS, tipicamente da 6 secondi.
- Cifratura per batch — i segmenti sono raggruppati in batch da 10 (60 secondi di riproduzione). Ogni batch riceve una chiave AES-128 appena generata.
- Upload CDN — i segmenti cifrati vengono caricati su Cloudflare R2 e serviti tramite la CDN globale CF con cache aggressiva.
- Key vault — le chiavi di cifratura sono memorizzate separatamente, mai sulla CDN, mai con i segmenti.
Quando uno spettatore preme play:
- Richiesta token — il player chiede un token di riproduzione a
/api/stream/{embed_token}/token. Il server verifica l’embed token, il dominio richiedente (contro la tua whitelist) e i rate limit. - Master playlist — il player recupera la
.m3u8master HLS e seleziona una variante in base alla banda. - Recupero chiave per batch — per ogni batch di segmenti che gli serve, il player richiede la chiave corrispondente a
/api/stream/{embed_token}/key/{batch}. Ogni URL di chiave è firmato col token di riproduzione e valido solo per quella sessione. - Decifratura lato client — la Web Crypto API del browser decifra i segmenti in memoria e li passa all’elemento video. Le chiavi non vengono persistite su disco.
Perché il multi-chiave conta
La cifratura a chiave singola (modello semplice di molte piattaforme) significa: un video, una chiave, un URL. Se quell’URL trapela, l’intero video è decifrabile per sempre.
La cifratura multi-chiave per batch significa: un video, molte chiavi, molti URL di breve durata. Se trapela un URL, è esposto solo quel batch (circa 60 secondi di filmato). Il batch successivo richiede una nuova richiesta di chiave, che chi ha fatto trapelare non può fare senza un token di riproduzione fresco.
Questo alza nettamente il costo della pirateria. I tool di rip automatici che funzionano contro piattaforme a chiave singola (varianti di yt-dlp, downloader come estensione browser) andrebbero riprogettati per ogni target multi-chiave — e quasi nessuno si prende la briga.
Token di riproduzione firmati
Ogni embed token porta metadata:
- Origini consentite (la tua whitelist di domini)
- Identificatore di spettatore opzionale (usato per il watermark dinamico in Enterprise)
- Finestra di scadenza (default 24 ore)
- Suggerimenti di rate limit
La chiave di firma sta solo sul server. I token contraffatti falliscono la verifica al momento della richiesta.
Se servi contenuti gated (solo membri, accesso ai corsi), la tua applicazione genera un embed token nuovo per ogni sessione autenticata, così il token scade quando la sessione scade. La REST API di AVCaption espone la generazione di embed token per i clienti Enterprise.
Whitelist dei domini
Per default ogni iframe di embed accetta solo hotlinking — il browser invia un header Referer con l’origine di embedding, e la stream API di AVCaption valida quell’origine contro la tua whitelist prima di emettere la master playlist.
Su Premium ed Enterprise specifichi esattamente quali domini sono ammessi. Chi incorpora l’iframe su un dominio non in whitelist riceve subito un 403.
È il livello dove si ferma la maggior parte della pirateria: gli scraper che prendono il tuo URL iframe e lo incorporano su un altro sito ricevono semplicemente un 403 e il player non si carica mai.
Confronto con altre piattaforme
| Approccio | Esempi | Forza | Quando va bene |
|---|---|---|---|
| Solo URL firmate | Wistia, path CF Stream base | Più debole — video intero decifrabile se l’URL viene catturato | Video marketing, basso rischio pirateria |
| AES-128 a chiave singola | Bunny Stream, path cifrati CF Stream | Forte contro l’hotlinking casuale; una chiave + token catturati decifrano tutto il video | Contenuto gated casuale |
| AES-128 multi-chiave | AVCaption | Chiavi rotanti per batch — una chiave catturata espone solo ~60 secondi | Contenuto a pagamento auto-prodotto |
| DRM Widevine / PlayReady | VdoCipher, JW Player Enterprise | Più forte — license server hardware-bound; richiesto per contenuti su licenza studio | DRM imposto da contratto |
Per corsi, tutorial gated, contenuti membership a pagamento, formazione B2B e video interni, AES-128 multi-chiave è il giusto compromesso. Il DRM è eccessivo, la chiave singola troppo sottile. La breakdown completa DRM vs cifratura copre la decisione.
Per iniziare
Vuoi vedere i segmenti cifrati in azione? Carica un video di test — bastano i primi 60 secondi. Apri DevTools, guarda volare le richieste .m3u8 e .m4s, e prova yt-dlp contro l’URL embed: i segmenti scendono cifrati e non riproducibili senza le chiavi rotanti per batch. Il free tier spedisce lo stack multi-chiave completo su ogni video; la cifratura è attiva di default, nessun toggle necessario.