Tutorial sullo streaming di contenuti multimediali con Amazon CloudFront
Perché scegliere Amazon CloudFront?
I clienti utilizzano Amazon CloudFront per trasmettere contenuti video a utenti di tutto il mondo utilizzando una vasta gamma di protocolli stratificati con HTTP come ultimo livello.
La rete per la distribuzione di contenuti (CDN) di Amazon può essere utilizzata con i Servizi multimediali AWS Elemental per implementare due diversi tipi di streaming video. In primo luogo, daremo un'occhiata allo streaming on demand di contenuti memorizzati su Amazon Simple Storage Service (Amazon S3). In seguito, esamineremo lo streaming in diretta di eventi o canali 24 ore su 24, 7 giorni su 7.
Per le best practice, consulta il whitepaper Amazon CloudFront for Media.
Creazione di flussi di lavoro video serverless
Streaming on demand
Nel caso dello streaming on demand, il tuo contenuto video viene memorizzato su Amazon S3. I membri del tuo pubblico possono scegliere di guardarlo in qualsiasi momento essi vogliano, da qui il nome on demand. Normalmente una soluzione completa di streaming on demand utilizza Amazon S3 per l'archiviazione, AWS Elemental MediaConvert per l'elaborazione di video basata su file e Amazon CloudFront per la distribuzione.
Amazon S3 è un'eccellente struttura di archiviazione di risorse video. È scalabile all'infinito, ha una ridondanza incorporata e sono disponibili tariffe basate sul consumo effettivo. Esistono diversi modi per caricare i contenuti sull'S3. È possibile iniziare a utilizzare la console di gestione AWS quando il volume è basso, quindi passare a un sistema più automatizzato all'aumentare del volume. È molto facile usare S3 dalla console. Dopo aver creato un account AWS, è sufficiente accedere, creare un bucket S3, quindi caricare il contenuto desiderato. Se si desidera implementare un sistema automatizzato, è possibile utilizzare l'interfaccia della riga di comando di AWS nei propri script o le API Amazon S3 nel proprio codice.
Una volta caricato, potrebbe essere necessario convertire il video nella dimensione, risoluzione o formato supportati da un televisore particolare o da un dispositivo collegato. AWS Elemental MediaConvert si occuperà di questo al posto tuo. MediaConvert prende il contenuto da S3, lo transcodifica in base alla richiesta e memorizza il nuovo risultato in S3. La transcodifica elabora i file video, creando versioni compresse del contenuto originale per ridurne le dimensioni, modificarne il formato o aumentare la compatibilità con i dispositivi di riproduzione. Anche in questo caso, è possibile gestire questo processo dalla console di gestione AWS, dalla riga di comando o tramite le API di MediaConvert.
Una volta che contenuti sono archiviati in modo sicuro e sono disponibili nei formati richiesti dagli utenti, il passo successivo è procedere alla loro distribuzione a livello mondiale con Amazon CloudFront. La rete per la distribuzione di contenuti di Amazon memorizza il contenuto nelle edge per una latenza minima e una velocità di trasmissione video elevata. Grazie alla sua scalabilità è possibile utilizzare la quantità di video che si desidera. È possibile gestire facilmente picchi imprevisti della domanda grazie alle tariffe basate sul consumo effettivo (per ulteriori informazioni, consulta i prezzi di CloudFront).
A questo punto la nostra storia si biforca: hai a disposizione due opzioni. È possibile consegnare l'intero file video al dispositivo prima di riprodurlo, oppure è possibile riprodurlo in streaming sul dispositivo.
La prima opzione è molto facile da implementare ed è supportata da quasi tutti i dispositivi mobili e desktop. Tutto quello che devi fare è mettere il contenuto in un bucket S3 e creare una distribuzione CloudFront che punti al bucket. Il lettore video dell'utente utilizzerà gli URL di CloudFront (accessibili come parte della distribuzione) per richiedere il file video. La richiesta verrà indirizzata alla migliore edge location, in base alla posizione dell'utente. La CDN utilizzerà il video presente nella sua cache, recuperandolo dal bucket S3 se non è già memorizzato. Questa opzione presenta un paio di svantaggi. Utilizza in modo inefficiente la larghezza di banda degli utenti. Se l'utente non guarda il video per intero, il contenuto che non verrà mai visualizzato rimane sempre scaricato ed è soggetto a pagamento.
La seconda opzione è, in genere, quella preferita. Una famiglia di protocolli di streaming video, tra cui il Live Streaming HTTP di Apple (HLS), il Dynamic Adaptive Streaming over HTTP (DASH), il Smooth Streaming di Microsoft (MSS) e il Dynamic Streaming HTTP di Adobe (HDS), che migliorano l'esperienza utente trasmettendo il video mentre è in corso la visione dello stesso, generalmente recuperando il contenuto con pochi secondi di anticipo rispetto. La riproduzione inizia più rapidamente, l'avanzamento veloce è più efficiente e l'esperienza utente generale è più fluida. Con questa opzione, si paga solo per ciò che lo spettatore guarda, non si spreca la larghezza di banda dell'utente, il quale può vedere il contenuto desiderato più rapidamente.
Per implementare la seconda opzione, sarà necessario eseguire un maggior numero di operazioni. In primo luogo, utilizza MediaConvert per convertire i file video in formato HLS (il protocollo di streaming più ampiamente supportato). In questo modo il video verrà diviso in segmenti corti e verrà creato un file manifest. Quindi, si indirizzerà la distribuzione di CloudFront al manifest. Infine, per riprodurre i video in diretta streaming, sarà necessario incorporare l'URL manifest nei dispositivi di riproduzione utilizzati dagli utenti per guardare la diretta streaming. Ad esempio, per riprodurre un video in diretta streaming per il quale il file manifest è myStream/playlist.m3u8 e la distribuzione di CloudFront è d111111abcdef8.cloudfront.net, dovrai incorporare nei dispositivi di riproduzione il seguente URL: http://d111111abcdef8.cloudfront.net/myStream/playlist.m3u8
La pagina "Video on Demand on AWS" fornisce le best practice e le linee guida da tenere in considerazione quando si implementa un flusso di lavoro video on demand sul cloud AWS; introduce, inoltre, una soluzione AWS che fornisce automaticamente i servizi necessari per costruire un'architettura scalabile e distribuita, la quale inserisce, archivia, elabora e distribuisce contenuti video.
Diretta streaming
Nel caso della diretta streaming, i contenuti possono riguardare eventi in diretta o la trasmissione di canali in diretta 24 ore su 24, 7 giorni su 7. Tra gli esempi del primo figurano le emittenti e gli aggregatori di contenuti che trasmettono in streaming tornei sportivi, cerimonie di premiazione, discorsi programmatici e altri eventi dal vivo molto visti. Esempi del secondo tipo sono gli studio, le emittenti e gli operatori di servizi di pay TV che desiderano pacchettizzare e trasmettere canali lineari in diretta su Internet direttamente al loro pubblico, senza una piattaforma di distribuzione di terzi.
È possibile utilizzare AWS per trasmettere, in modo conveniente, contenuti in diretta a un pubblico mondiale: basta seguire pochi e semplici passaggi.
Il primo passo è l'elaborazione video in diretta. A tal fine, è possibile utilizzare AWS Elemental MediaLive, che codifica la diretta streaming del video in tempo reale prendendo una sorgente video in diretta di grandi dimensioni (ad esempio, proveniente da un codificatore on-premises come AWS Elemental Live) e comprimendola in versioni più piccole da distribuire agli utenti. Il secondo passo prevede due opzioni a seconda del proprio caso d'utilizzo. È possibile utilizzare un pacchetto di origine JIT come AWS Elemental MediaPackage per convertire il contenuto video da un singolo formato in più formati e pacchettizzarlo in modo sicuro per diversi tipi di dispositivi. MediaPackage rende più semplice implementare caratteristiche video molto popolari tra gli utenti (autoplay, pausa, rewind, ecc.), come quelle che è possibile trovare nei videoregistratori digitali. Inoltre, consente di proteggere i contenuti utilizzando sistemi Digital Rights Management (DRM). In alternativa, se il codificatore sta già trasformando il contenuto nel formato richiesto da tutti i dispositivi degli utenti finali, è possibile utilizzare un'origine scalabile ad alte prestazioni come AWS Elemental MediaStore. MediaPackage e MediaStore distribuiscono il contenuto su Amazon CloudFront, che lo indirizzerà al pubblico che sta guardando l'evento in diretta.
Una volta che la soluzione è pronta e viene eseguita, l'evento in diretta può essere trasmesso in tutto il mondo in modo scalabile ed economico. La CDN può ospitare un pubblico che varia per dimensioni ed è in grado di gestire "affollamenti lampo".
La pagina "Live Video Streaming" fornisce le best practice e la guida da tenere in considerazione nella scelta di un flusso di lavoro di streaming video in diretta sul cloud AWS; introduce, inoltre, una soluzione AWS che fornisce automaticamente i servizi necessari per costruire un'architettura altamente disponibile e conveniente, la quale offre un'eccezionale esperienza di visualizzazione in tempo reale.