Nozioni di base sui file multimediali

Derek Herman
Derek Herman
Mario Rossi
Joe Medley

In questo articolo, scoprirai le nozioni di base sui file multimediali, ad esempio i concetti di container e alcuni dei tanti formati di codec disponibili in uno stream. Inoltre, approfondisci argomenti come streaming adattivo, velocità in bit e risoluzione, ma approfondiremo questi aspetti nelle sezioni successive.

Pubblicazione dei file video

Potresti pensare di poter prendere un file non elaborato di una videocamera e caricarlo sul Web così com'è. In effetti, i siti di streaming video come YouTube o Vimeo consentono di farlo e offrono persino funzionalità di live streaming, in genere collegandoti alla porta HDMI della videocamera ed elaborandolo tramite una scheda di acquisizione. Questi servizi semplificano notevolmente l'elaborazione e il caricamento dei video, inclusi la generazione dei numerosi file e manifest necessari per lo streaming adattivo e per varie risoluzioni. Oltre ai molti altri requisiti complessi e specifici che rendono l'hosting autonomo un po' un compito noioso. Preparare e pubblicare un video dal tuo sito, e probabilmente da un server multimediale separato, è un po' più complicato del semplice caricamento di un file della videocamera non elaborato, se ti interessa l'esperienza degli utenti sul tuo sito.

I file video sono disponibili in diversi formati. Il formato fornito dalla fotocamera è in genere un file .mov o un file .mp4 se hai una buona fotocamera mirrorless moderna. Tuttavia, anche se .mov è una buona soluzione per la registrazione, l'editing e altri processi di post-produzione, le dimensioni del file non sono ideali per lo streaming sul Web. Inoltre, le dimensioni del file .mp4 non elaborato in 4K renderanno la riproduzione del file molto proibitiva sui dispositivi mobili. Poiché i browser supportano diversi formati file, dovrai creare più file ottimizzati e potenzialmente un manifest se prevedi di supportare lo streaming adattivo. Prima di convertire i file, devi comprendere alcune nozioni di base su di essi e sulle loro caratteristiche.

Container, codec e flussi?

Il file visualizzato nella shell del tuo sistema operativo è un contenitore, identificato da un'estensione del file (.mp4, .webm, .ogg e così via). Il container ospita uno o più stream. Un file multimediale può avere un numero illimitato di flussi, con molti più formati rispetto a quelli illustrati qui.

I file di esempio utilizzati più avanti in questa sezione contengono al massimo due flussi: uno stream audio e uno stream video. Tra gli altri tipi che potresti trovare ci sono i sottotitoli e i dati, entrambi esula dall'ambito di questo articolo. In alcune istanze i flussi audio e video vengono gestiti separatamente. La maggior parte dei file che incontrerai conterrà solo un singolo stream audio e un singolo stream video.

Negli stream audio e video, i dati effettivi vengono compressi utilizzando un codec. Un codec, o codificatore/decoder, è un formato di compressione per dati video o audio. La distinzione tra container e codec è importante perché i file con lo stesso contenitore possono avere i propri contenuti codificati con codec diversi.

L'immagine seguente illustra questa struttura. A sinistra si trova la struttura di container di base con due flussi. A destra sono riportate le specifiche di quella struttura per un singolo file WebM.

Confronto della struttura di un file multimediale con un file multimediale ipotetico.
Parti di un file multimediale.

I file nei contenitori WebM possono avere dimensioni più piccole rispetto agli altri formati, il che li rende un'ottima scelta per i siti mobile per la riproduzione in streaming. Purtroppo, non tutti i browser supportano container e codec aggiornati. Ad esempio, WebM è stato creato appositamente per il web come opzione open source e di alta qualità, ma il suo supporto non è ancora universale. In particolare, Safari non supporta, secondo Can I use al momento della stesura di questo documento, WebM per i video incorporati. Tuttavia, WebM supporta parzialmente con i codec VP8 e VP9 utilizzati in WebRTC. Quindi, la soluzione migliore è fornire un video di riserva.

Formati codec

Molti tipi di file supportano più codec all'interno dello stesso container. Un elenco completo dei codec video e dei codec audio disponibili è un intero sito web a sé stante. I link appena forniti rimandano agli elenchi pratici di MDN degli elementi utilizzabili sul Web. Di seguito sono elencati i tipi di file attualmente preferiti e i codec che potrebbero utilizzare. Segui i link dei tipi di file per visualizzare i browser che li supportano.

Tipo di file Codec video Codec audio
MP4 AV1, AVC (H.264)*, VP9 AAC
WebM AV1, VP9* Vorbis, Opus

* Indica il codec video preferito.

Velocità in bit e risoluzione

La velocità in bit è il numero massimo di bit utilizzato per codificare un secondo di uno stream. Più bit vengono utilizzati per codificare un secondo di flusso, maggiori sono i dettagli e la fedeltà potenziali. Forniamo ulteriori informazioni su questo concetto in Bitrate.

La risoluzione è la quantità di informazioni in un singolo fotogramma di video, espressa come numero di pixel logici in ogni dimensione. Forniamo ulteriori informazioni su questo concetto nella sezione Risoluzione.

Nella sezione Nozioni di base sulle applicazioni multimediali ti mostreremo come esaminare queste caratteristiche utilizzando due strumenti a riga di comando: Shaka Packager e FFmpeg.