Quando si parla di codec video (o codec audio) su internet si fa una grande confusione di termini, e spesso confrontando fonti diverse si trovano definizioni e spiegazioni discordanti, quindi perché non alimentare questo marasma? 😀

Perché servono i codec. Per chi non lo sapesse, un video è composto da all’incirca 25 o 30 fotogrammi al secondo, ciascuno dei quali è assimilabile ad un “mosaico” di quadratini colorati, i pixel. Per rappresentare ogni pixel si ricorre ad una terna di colori, rosso verde e blu, ciascuno dei quali può assumere 256 diversi valori, per un totale di circa 16 milioni di colori possibili: la memoria richiesta per un pixel è quindi di 3 byte. In un mondo perfetto andrebbe già bene così senza dover comprimere o trasformare niente, ma in realtà un DVD potrebbe memorizzare solamente 4.700.000.000 ÷ (640 x 480 x 3 x 25) ≈ 204 secondi, poco meno di quattro minuti di video non compresso a risoluzione standard, e senza aver considerato il suono. La compressione, al costo di ridurre in certa misura la qualità del video, permette di risparmiare una notevole quantità di spazio di archiviazione e banda nel caso di streaming su internet. Una cosa che può sembrare curiosa è che persino la tv digitale, a differenza di quella analogica, viene trasmessa in maniera compressa.

Come funzionano i codec. In pratica nella compressione si analizza ciascun fotogramma alla ricerca di colori simili approssimandoli ad uno solo, giocando sul fatto che l’occhio umano non riesce a distinguere due colori molto simili, senza tenere conto che la maggior parte dei monitor di fascia bassa non riesce a produrre il 100% della gamma di colori disponibili, a volte anche solo il 40%. Inoltre è da tenere conto che, specie in scene fisse o poco movimentate, molte immagini di seguito si ripresentano quasi uguali, ed è inutile salvare più volte porzioni di immagini uguali o comunque indistinguibili ad occhio. I codec video pertanto tengono conto di questi fattori e molti altri per cercare di ridurre al minimo le dimensioni di un filmato senza compromettere eccessivamente la qualità.

La terminologia. Spesso si fa grande confusione in termini come dicevo poco fa.

  • Immaginiamo di voler ridurre il numero di lettere di un testo senza cambiare il numero di parole: si può sostituire per con x, perché con xk, e così via. L’insieme di regole che specificano i passaggi per comprimere il testo in questione, così come un video o un audio, si chiama codec, dall’unione di coder e decoder, anche se questa parola viene riutilizzata più volte con altri significati. I principali codec video (o famiglie di codec) sono MPEG-1, MPEG-2, MPEG-4, DivX, XviD, ecc. I nomi spesso traggono in inganno: H264, MPEG-4 AVC, MPEG-4 Part 10 indicano tutti lo stesso codec 🙂 . Non tutti i codec hanno la stessa efficienza: H264, più recente di MPEG-2, riesce a parità di qualità video ad occupare meno spazio. Anche il DivX, molto utilizzato su internet qualche anno fa, è più efficiente di MPEG-2 e veniva utilizzato per comprimere i film piratati da DVD. Abbandonato appena possibile, il suo svantaggio principale è quello di essere un codec proprietario, ed infatti molti televisori/dispositivi multimediali non lo decodificano perché i produttori non hanno pagato le licenze: scacco matto pirati! 😀 XviD, guarda caso l’inverso di DivX, è invece un codec libero, utilizzabile senza licenze, nato anche per soppiantare DivX.
  • Il decoder è un apparecchio o un software in grado di decomprimere e mostrare un flusso video: Windows Media Player contiene un decoder per decodificare video compressi, il decoder che ci hanno costretti a comprare per continuare a vedere la televisione è in grado di decodificare flussi video captati con l’antenna, e così via. Sempre sul tema digitale terrestre, alias DVB-T, tutte le trasmissioni sono codificate in MPEG-2, lo stesso codec tra l’altro utilizzato nei DVD, mentre per i canali in HD in Italia si usa H264, che “spreca” meno banda rispetto a MPEG-2 introdotto nel lontano 1994. Ed infatti, proprio perché il codec utilizzato adesso è fin troppo vecchio, si sta pensando di passare a DVB-T2 in accoppiata al codec H265: chissà se tra un paio d’anni non dovremo già cambiare decoder 😀
  • Il coder fa il lavoro inverso del decoder, ossia comprime un video o un audio in ingresso seguendo un particolare codec. Spesso contiene un decoder per decodificare l’audio/video in ingresso da trasformare, agendo quindi da convertitore. Il programma più famoso e open-source che contiene un gran numero di coder e decoder, per supportare il maggior numero di codec, si chiama ffmpeg, e pare sia utilizzato anche da youtube.
  • Il contenitore è quello che dice di essere, il contenitore che contiene il o i flussi video e audio di un filmato, ed è riconoscibile dall’estensione dei file. I più famosi sono avi, mpg o mpeg, mkv e per gli audio mp3, ogg, wav, flac. Si fa spesso confusione perché alcuni contenitori possono contenere solo specifici codec: ad esempio il contenitore mp3 può solo contenere un audio codificato in mp3, il contenitore mpg solo i video secondo i vari codec mpeg, mentre ci sono contenitori come l’avi, molto di moda su internet in passato, che può contenere mpeg, divx, xvid e così via. Dall’estensione di un file perciò non si può capire secondo quali codec video e audio sia stato codificato, ma solo il contenitore che li tiene assieme nel file.

Quindi quando si dice che è necessario scaricare i codec si intendono quei programmi o estensioni che fungono da decoder e meno spesso anche da coder. Se parlo del codec H264 non intendo invece un software ma uno standard di compressione, che viene adottato da programmi e dispositivi diversi ma tutti compatibili fra loro.