Poiché le piattaforme di streaming continuano a conquistare i nostri schermi e a rivoluzionare il modo in cui consumiamo i contenuti, l'importanza di costruire un servizio di streaming robusto e scalabile non è mai stata così critica. Come possono le aziende garantire la compatibilità tra dispositivi e piattaforme, riducendo al contempo i costi e massimizzando l'efficienza? In questo articolo ci occuperemo della transcodifica dei video on-demand.
In questa esercitazione, imposteremo la transcodifica video utilizzando il motore Kubernetes di Linode per aiutare a scalare l'infrastruttura di transcodifica in base alla domanda. Seguiremo il processo di conversione di un file mp4 in HLS (HTTP Live Streaming), un formato comunemente usato dai servizi di streaming. HLS utilizza funzionalità di streaming a bitrate adattivo per garantire una riproduzione fluida e un'esperienza di visione coerente, indipendentemente dal dispositivo o dalla velocità della rete. Per iniziare, utilizzeremo un file mp4 (può essere un video di esempio già presente in formato mp4), lo caricheremo in un bucket di input e lo invieremo al nostro partner di transcodifica, Capella, per gestire la transcodifica del video.
Capella è un partner di Akamai che offre soluzioni pronte all'uso che possono essere eseguite su Akamai Compute. Abbiamo collaborato con Capella perché è in grado di eseguire gli encoder sulla nostra piattaforma, di memorizzare gli asset VOD su Object Storagee distribuire attraverso il CDN Akamai. Questa partnership ci permette anche di distribuire con Kubernetes e Helm, il che rende molto più semplice la scalabilità. Ad esempio, nell'esercitazione sottostante, le macchine di codifica di Capella si attivano automaticamente per scalare in base al numero di lavori, per poi ridimensionarsi una volta completato il lavoro, risparmiando migliaia di dollari di tempo di calcolo inattivo.
Prerequisiti:
Per completare questa esercitazione, è necessario iscriversi a un account Linode. L'iscrizione è gratuita e in più si ottiene un credito di 100 dollari!
- Un token API Linode
- Installare kubectl
- Installare il timone
- Installare gli strumenti Kubernetes esterni elencati qui.
- Una licenza Capella (inviare un'e-mail a sales@capellasystems.net per ottenere una licenza gratuita)
Passo 1: Creare un cluster Kubernetes
Il primo passo consiste nel creare un cluster Kubernetes che eseguirà la codifica. Dalla dashboard di Akamai Cloud, fare clic su Kubernetes e poi su Crea cluster.
Quindi, inseriamo alcune configurazioni per il cluster. Chiamiamolo "transcodifica-demo". Scegliete la regione più vicina a voi. Per me è Los Angeles. Si consiglia inoltre di abilitare il piano di controllo ad alta disponibilità per attivare l'alta disponibilità nel cluster Kubernetes.
Nella sezione Aggiungi pool di nodi, aggiungiamo 3 nodi dal piano Dedicated 8 GB. Questi tre nodi sono i nodi di gestione, uno dei quali viene eletto automaticamente come leader e gli altri due sono per la ridondanza dei manager.
Una volta aggiunti questi elementi, nella parte superiore della schermata comparirà un pulsante con la dicitura Create Cluster (Crea cluster). Fare clic su questo pulsante per creare il cluster Kubernetes. Nota: questa operazione potrebbe richiedere alcuni minuti.
Ora la configurazione dell'ambiente Kubernetes è completa. Nella dashboard di Cloud Manager si notano i 3 nodi creati, con lo stato Running.
Quindi, scarichiamo il file Kubeconfig facendo clic sul link sottostante dalla dashboard. Verrà scaricato sul vostro computer locale. Assicuratevi di spostare il file nella vostra directory Kubernetes (nello stesso posto in cui avete impostato kubectl).
Quindi, fare clic sul link Kubernetes Dashboard per aprire la dashboard di Kubernetes.
Verrà visualizzato questo messaggio e si dovrà fare clic sull'opzione per accedere con il file kubeconfig appena creato.
Dal pannello di sinistra, facendo clic su Cluster, si vedranno i nodi appena creati.
Passo 2: Creare e modificare il file di configurazione di Helm
Ora creiamo e modifichiamo il file di configurazione Helm che verrà utilizzato per distribuire il cluster Cambria nell'ambiente Kubernetes. Un cluster Cambria è una rete scalabile di transcodifica composta da più workstation Cambria FTC per l'elaborazione di un grande volume di file video. Cambria Cluster Manager instrada le azioni attraverso la rete.
Per prima cosa, scarichiamo l'archivio dei file di configurazione di Capella Cluster con i due comandi seguenti:
curl -L -s -o capella-cluster.tgz
helm show values capella-cluster.tgz > capellaCambriaConfig.yaml
Nel file di configurazione, dobbiamo aggiornare due campi: la chiave di licenza Capella e il token API Linode.
Aggiungete la chiave di licenza che avete ricevuto (dal team di Capella dopo aver inviato un'e-mail a sales@capellasystems.net nella sezione prerequisiti) nel campo ftcLicenseKey.
Quindi, aggiungere il proprio token API di Linode (utilizzare il link nella sezione prerequisiti per generarne uno) nel campo linodeAPIToken.
Passo 3: Installazione del cluster Cambria
Ora è necessario installare il cluster Cambria. Questo cluster viene utilizzato per l'elaborazione di un grande volume di file video.
helm upgrade -install capella-cluster capella-cluster.tgz -values capellaCambriaConfig.yaml
Vedrete che lo stato è cambiato in distribuito.
A questo punto, alcuni componenti vengono distribuiti nell'ambiente Kubernetes. È meglio attendere qualche minuto affinché tutto venga distribuito prima di continuare.
Fase 4: Aprire l'interfaccia web di Cambria Cluster
Dal pannello sinistro della dashboard di Kubernetes, fare clic su Servizi. Copiare quindi l'indirizzo IP del nodo centrale (porta 8161). Questa porta è specifica per l'interfaccia web.
In una nuova scheda, inserire "https://" e incollare l'indirizzo IP. (Potrebbe essere necessario fare clic su Avanzate > Inserisci sito per inserire il sito). A questo punto verrà visualizzata l'interfaccia web di Cambria Cluster. Accedere con le credenziali della WebUI dal file capellaCambriaConfig.yaml. (Per maggiori dettagli su come trovare queste credenziali , consultare la pagina 8).
Fase 5: Creare i bucket di input e di output.
Ricordiamo che stiamo convertendo un video mp4 in formato HLS. Creeremo un bucket con due cartelle: una per l'input del nostro file mp4, chiamata sorgente, e una per l'output del nostro file HLS, chiamata output.
Accedere ad Akamai Cloud Manager e fare clic su Object Storage dal pannello di sinistra. Quindi, fare clic su Crea bucket. Chiamiamolo Capella. Assicurarsi di scegliere la stessa regione scelta per il cluster Kubernetes. Quindi fare clic su Crea bucket.
Dopo aver creato il bucket, è necessario copiare la sua posizione e incollarla successivamente nel nostro file XML. Fare clic sul pulsante Dettagli del bucket, quindi fare clic sul pulsante Copia, come mostrato di seguito, accanto alla sua posizione. Salvare il tutto in un blocco note, perché ci servirà in seguito.
Occorre poi creare le chiavi di accesso per il bucket. Fare clic su Chiavi di accesso, quindi su Crea chiave di accesso.
Chiamiamolo accesso a cappella.
Verrà visualizzato un piccolo popup che mostrerà la chiave di accesso e la chiave segreta. Copiatele e incollatele in un blocco note perché ci serviranno in seguito. Dopo averli salvati, fate clic su Ho salvato la mia chiave segreta.
Ora, nel nostro bucket di archiviazione oggetti, creiamo 2 cartelle: una per l'input e una per l'output. Fare clic sul bucket, quindi su Crea cartella. Chiamiamo la cartella di input "source".
Facciamo la stessa cosa per la cartella di output. Chiamiamola "output".
Fase 6: modificare i campi del documento HLS di esempio.
Capella ci ha inviato questo file di esempio per eseguire lavori di transcodifica per conversioni da mp4 a HLS. Ci sono altri file di esempio tra cui scegliere, ma assicuratevi di chiedere quale volete quando gli inviate un'email (controllate i prerequisiti sopra). Assicurarsi di salvarlo nella cartella Kubernetes.
Copiare e incollare la chiave di accesso e la chiave segreta nella sezione della descrizione del lavoro alle righe 8 e 9 del file XML.
Aggiungete gli stessi valori alle righe 234 e 235 della sezione Impostazioni di caricamento.
Nella riga 231, incolliamo la regione del nostro secchio. Dovreste averla copiata in un blocco note dal passo precedente.
Successivamente, nella sezione Impostazione del caricamento, occorre aggiornare i campi bucket e location. Alla riga 227, aggiornare il campo bucket a "capella" e alla riga 228, aggiornare il campo location a "output". (Ricordate che abbiamo creato un bucket chiamato capella e la cartella di output si chiama output).
Passo 6: caricare un file mp4 nel bucket di input
Quindi, carichiamo un file mp4 nel bucket di input. Può essere un video del vostro cane, un video di cucina che avete registrato, qualsiasi file mp4. Io sto usando un file mp4 chiamato flying5. Andiamo su Akamai Cloud Manager e nel bucket di origine carichiamo il file mp4.
Ora torniamo al file XML. Aggiungiamo il percorso del file sorgente alla riga 347, come mostrato di seguito.
Fase 7: Esecuzione del lavoro di transcodifica
Ora siamo pronti per la transcodifica! Eseguiremo il lavoro di transcodifica utilizzando una chiamata API. È necessario sostituire alcune cose nel comando curl qui sotto. Per prima cosa, navigare nella dashboard di Kubernetes e ottenere l'indirizzo IP del primo nodo (porta 8650). Questa porta è specifica per la comunicazione del lavoro di codifica. Copiatela negli appunti e incollatela da qualche parte per salvarla (tutto ciò che precede .ip). Ne avrete bisogno tra poco.
Quindi, dal file capellaCambriaConfig.yaml, copiare il cambriaClusterAPIToken e salvarlo. Nel comando curl , sostituire il valore usertoken con il token API.
Quindi, aggiungere il nome del file xml del lavoro di transcodifica. Io ho salvato il mio come mp4-hls-transcoding-job.xml.
Eseguiamo questo comando dal terminale.
curl -k -X POST "https://123.456.78.90:8650/CambriaFC/v1/Jobs/?usertoken=12345678-1234-5678-abcd-efghijklmn" -d @mp4-hls-transcoding-job.xml
Per confermare che il lavoro è in esecuzione, consultiamo la dashboard di Kubernetes. Accediamo alla dashboard di Kubernetes e apriamo il seguente URL per la porta 8161, che è la porta dell'elenco dei lavori.
Ogni volta che i lavori vengono inviati a Cambria Cluster Manager, vengono visualizzati nella WebUI di Cambria nell'elenco dei lavori.
Questi lavori verranno distribuiti alle macchine di codifica FTC per essere eseguiti. Cambria Cluster Manager avvierà automaticamente una nuova macchina FTC se in precedenza non c'erano lavori in coda. Se il numero di lavori in coda è elevato, verranno lanciate altre macchine FTC per gestire il carico.
Dalla pagina di riepilogo di Akamai Linode Kubernetes, si vedrà il provisioning di una nuova macchina. Una volta che la macchina è stata fornita, è possibile vederla sotto Nodi nella dashboard Kubernetes e anche nella WebUI di Cluster Manager. Una volta disponibile e connesso automaticamente al cluster, il lavoro verrà distribuito alla macchina FTC per essere eseguito. L'elenco dei lavori della WebUI può essere utilizzato per monitorare l'avanzamento.
Una volta completato il lavoro, si vedrà che lo stato è cambiato in eseguito nella WebUI.
Verranno creati 3 diversi file video con diversi tipi di video. Quando si torna alla console Akamai, nella cartella di output si vedrà un file di output con alcune cartelle. Una cartella contiene l'audio, una il video e una i metadati.
È possibile riprodurre questi file attraverso un lettore abilitato per HLS (potrebbe essere una sorta di plugin per il browser o una terza parte).
La transcodifica video è un aspetto cruciale della moderna distribuzione multimediale e, seguendo i passi di questo tutorial, potrete affrontare facilmente questa sfida!
Per riassumere
Questo esempio di transcodifica video illustra la flessibilità e la potenza della moderna distribuzione multimediale utilizzando Linode Kubernetes Engine (LKE ). Le macchine di codifica si attivano automaticamente per scalare in base al numero di lavori, per poi ridimensionarsi una volta completato il lavoro, dimostrando i notevoli risparmi ottenuti con l'uso di LKE.
Dopo aver effettuato con successo la transcodifica del video, è possibile sfruttare la rete di server Akamai distribuiti strategicamente in tutto il mondo, per garantire che i video in formato HLS vengano consegnati rapidamente e senza problemi al pubblico, indipendentemente dalla loro posizione geografica. Ciò contribuirà ad alleggerire il carico sul vostro server di origine, scaricando la consegna dei contenuti sui server edge distribuiti di Akamai. Questo non solo migliora le prestazioni e la scalabilità della distribuzione dei video, ma migliora anche l'esperienza complessiva dell'utente riducendo la latenza e il buffering. Inoltre, il CDN Akamai offre funzionalità avanzate come lo streaming con bitrate adattivo, che regola automaticamente la qualità del video in base alle condizioni di rete dello spettatore, garantendo una riproduzione fluida su una varietà di dispositivi e velocità di connessione. Ciò è particolarmente importante per la distribuzione di contenuti video di alta qualità ai dispositivi mobili e alle aree con larghezza di banda limitata.
I prossimi passi
In questa esercitazione abbiamo utilizzato Akamai per transcodificare un video dal formato mp4 al formato HLS. Questa conversione garantisce la compatibilità con diversi dispositivi per lo streaming. L'elenco completo dei possibili formati di ingresso e di uscita per la transcodifica video è disponibile qui.
Se volete saperne di più su come implementare la transcodifica video, iscrivetevi alla nostra newsletter, collegatevi con noi su Twitter o LinkedIn o iscrivetevi al nostro canale YouTube.
Oltre a queste guide tecniche, se voi o la vostra organizzazione state pensando di ottimizzare le vostre soluzioni di transcodifica video e Kubernetes, potete provare le soluzioni di Linode iscrivendovi per ottenere 100 dollari di crediti gratuiti.
Commenti