Amazon Elastic Transcoder servizio di transcodifica video
da Massimo Della Rovere · pubblicato il 11 maggio, 2014 · modificato il 5 giugno, 2017

La conversione video può essere considerata un’operazione relativamente semplice quando si tratta di convertire qualche video per uso personale o utilizzare uno dei tantissimi software di transcodifica disponibili su diverse piattaforme. Però quando l’esigenza di conversione deve essere risolta in ambiente server con l’elaborazione di molte conversioni e con video di grandi dimensioni allora iniziano i problemi, infatti non solo l’aspetto tecnico diventa complicato ma anche la potenza necessaria diventa importante e non gestibile da un server dedicato e tanto meno da un servizio di hosting.

Amazon Elastic Transcoder

Proprio da questa esigenza nasce il servizio di Amazon Elastic Transcoder che consente la conversione di file multimediali memorizzati all’interno di Amazon S3 in vari formati e che possono essere visualizzati da diversi dispositivi di riproduzione. Per esempio, è possibile convertire grandi file multimediali digitali di alta qualità in formati che gli utenti possono riprodurre su dispositivi mobili, tablet, web browser e TV.

Per utilizzare questo servizio e gestire una conversione video di alta qualità in maniera veloce e scalabile non dobbiamo installare nessun software sul nostro server e tanto meno studiare i centinaia di parametri che regolano una transcodifica video. Come detto precedentemente dobbiamo solo memorizzare il video originale sullo storage S3 e avviare un’elaborazione con Elastic Transcoder che penserà a darci il risultato finito.

Schema generale del servizio

Elastic transcoder

Componenti

Il servizio di conversione video messo a disposizione da Amazon è suddiviso in quattro componenti principali, vediamo insieme le caratteristiche generali:

(1) Jobs: esegue il lavoro di transcodifica. Ogni lavoro può convertire un file fino a 30 formati differenti. Ad esempio, se si vuole convertire un file multimediale in 6 differenti formati, è possibile creare un singolo job che esegua questa conversione nei sei formati richiesti. Quando si crea un lavoro (job) bisogna specificare il nome del file che si vuole transcodificare e il nome che Elastic Transcoder utilizzerà nei file dei risultati.

(2) Pipelines: sono le code che gestiscono i lavori di transcodifica. Quando si crea un lavoro, bisogna specificare quale pipeline si desidera assegnare al job. Il servizio inizierà a processare i lavori all’interno di una pipeline nell’ordine in cui sono stati aggiunti. Se si configura un processo di transcodifica in più di un formato, Elastic Transcoder crea i file per ogni formato nell’ordine in cui sono stati specificati i formati nel job.

Una configurazione abbastanza comune è quella di creare due pipeline: una per l’elaborazione dei lavori (jobs) a priorità normale e l’altra per una elaborazione ad alta priorità. La maggior parte dei lavori finirebbe nella coda normale mentre la coda ad alta priorità verrebbe utilizzata solo quando si richiede una transcodifica immediata.

Una pipeline può processare più di un lavoro simultaneamente, e il tempo richiesto per terminare un job varia significativamente in base alle dimensioni del file che si vuole convertire e alle specifiche assegnate al job. Di conseguenza i lavori non verranno necessariamente completati nello stesso ordine in cui sono stati creati. È possibile interrompere temporaneamente i lavori mettendo in pausa la pipeline.

(3) Presets: sono modelli (chiamati templates) che contengono la maggior parte delle impostazioni per la transcodifica dei file multimediali da un formato all’altro. Elastic Transcoder include alcuni settaggi predefiniti per i formati più comuni, ad esempio varie versioni di iphone o android. È inoltre possibile creare i propri presets per i formati che non sono inclusi tra le impostazioni predefinite. Il preset che si vuole utilizzare deve essere specificato durante la definizione e l’avvio di un lavoro (job).

(4) Notifications: opzionalmente è possibile configurare Elastic Transcoder e Simple Notification Service (SNS) per seguire un processo: ad esempio quando inizia un lavoro, quando termina, quando si rilevano condizioni di avviso o di errore, etc, etc. È possibile configurare le notifiche SNS durante la creazione di una pipeline.

Schema generale dei componenti

Elastic transcoder

Accedere

Elastic Transcoder è un servizio web RESTful che utilizza come protocollo HTTPS e JavaScript Object Notation (JSON) come formato del messaggio. Il codice della nostra applicazione può fare richiesta direttamente alle API di Elastic Transcoder. Quando si utilizzano direttamente le REST API, bisogna scrivere il codice necessario per firmare e autenticare le richieste. Elastic Transcoder fornisce anche una console grafica per una gestione interattiva. E’ possibile utilizzare la console per effettuare tutte le operazioni che possono essere eseguite utilizzando le Elastic Transcoder API.

La conversione di un video

Adesso vediamo insieme i passi necessari per eseguire la nostra prima conversione video: Collegamento tramite il nostro account su AWS, creare un bucket S3 o due se si vuole differenziare i file di input da quelli di output, creare una pipeline, creare un preset o utilizzarne uno standard fornito dal servizio di Elastic Transcoder, creare un nuovo lavoro (job) e monitorizzare il suo completamento, controllare i file di output.

Creazione di una pipeline

Diamo per scontato che abbiamo un account AWS e sappiamo creare un bucket S3, quindi vediamo come creare una pipeline da usare con Elastic Transcoder. Andiamo nella nostra management console e selezioniamo il servizio dal solito elenco, lo trovate nel gruppo degli Application Services. La prima cosa che vi verrà chiesta è proprio la creazione di una pipeline dove bisognerà specificare i seguenti parametri:

Elastic transcoder

1) Nella prima parte dobbiamo inserire un nome della pipeline, normalmente si usa un nome di prefisso a cui aggiungere il tipo di coda, d esempio normale o ad alta priorità, io uso spesso il formato transcoder.dominio.standard o finale .high.

2) Nome del bucket S3 in cui verranno memorizzati i video originali. Potete usare questo bucket anche come destinazione, però in questo caso usate delle cartelle diverse, ad esempio potete creare dei folder input, output e covers (per le copertine).

3) Indicare il ruolo di Autorizzazione, all’inizio potete utilizzare quello standard, ma quando andate in produzione create un’utente IAM adatto allo scopo specifico. I permessi di default posso essere specificati anche nelle definizioni dei bucket S3.

4) Indicare il nome del bucket S3 dove verranno memorizzati i file convertiti, e il nome di quello in cui verranno memorizzate le copertine, come già detto potete utilizzare lo stesso bucket indicato come origine e gestire la suddivisione tramite cartelle.

5) Come ultimo parametro indicate il sistema di notifiche SNS e le informazioni che volete attivare,  progressing, warning, completion o error. Ovviamente prima dovete creare e configurare un topic SNS adatto allo scopo. (vedere documentazione).

Creazione di un Job

Adesso che abbiamo la nostra coda lavori possiamo definire un JOB per la richiesta di una conversione video. Andiamo sempre nella management console e selezioniamo nella sezione del servizio la voce JOBs dove troviamo il pulsante “create new job”. Una volta selezionato dovremmo inserire differenti parametri come segue:

Elastic transcoder

1) La prima cosa che dobbiamo specificare è il nome della pipeline in cui deve essere sottomesso il nostro lavoro, ad esempio quella standard o una ad alta priorità per eseguire subito la conversione senza aspettare la conclusione di quelli standard.

2) Indicare il nome del file di origine che deve essere convertito e il prefisso da utilizzare nei file di output, normalmente su questa ultima opzione si indica un folder. In ogni caso questo prefisso viene aggiunto al nome del file indicato come output.

3) Indicare il preset di conversione che contiene tutti i parametri tecnici legati alla qualità e alle caratteristiche generale del video. Amazon mette a disposizione molti preset già preconfigurati, in ogni caso per necessità particolari potere crearli di nuovi.

4) Specificare il nome del file di output, il punto di partenza e la sua durata, la creazione di una copertina, il valore di rotazione e alcuni parametri tecnici come il frame rate, aspect ratio,  interlaced e container. Molte di queste opzioni possono essere “auto”.

Schermata di riepilogo

Elastic transcoder

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services.  Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

condividi