quando il video va on line

Streaming, codifica, protocolli e reti

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
home codifica

Compressione o Codifica. I ferri del mestiere

E-mail Stampa PDF

Formati di file | Codec: Codificatori-Decodificatori | Player multimediali

 

Principali codec

La compressione o la codifica[1] dei dati di un file multimediale è uno dei prerequisiti per la trasmissione in streaming. Se i protocolli stabiliscono le modalità degli scambi, i formati di file rendono standard le moda­lità in cui vengono memorizzati i dati al proprio interno (modalità già note al player), mentre i codec si occupano di codificare, e con l’au­silio del player di deco­dificare e riassemblare, il file multimediale una volta a destinazione. Senza la compressione[2] i file video sarebbero di di­mensioni tali da non poter essere inviati e senza la qua­lificante interazione del player, i file rimarrebbero un bit stream, un flusso di dati binari, e non potrebbero essere riprodotti on demand o trasmessi live sullo schermo del nostro PC.


Compressione o Codifica

Tutti, a diversi livelli (e con diversi gradi di qualità), hanno compresso e comprimono dati. L’abbiamo fatto in prima persona quando abbiamo trasferito nel formato di file MP3 i nostri archivi musicali dalle audiocassette ai CD e poi agli iPod,  e gli audio-video in MP4 dalle videocassette VHS ai DVD; lo fanno i broadcaster quando ripropongono on line e in versione podcast prodotti audio-video dai propri archivi e dai propri palinsesti; lo fanno, inoltre, le compagnie telefoniche sperimen­tando in alta definizione film in banda larga.


Finalità della compressione

La funzione primaria di una compressione è di conformare il video alla piattaforma di distribuzione, sia che si tratti della TV propriamente detta, sia di un DVD, di Internet, di un iPod o di un telefono cellulare.

In una compressione video il contenuto di ogni singolo fotogramma viene analizzato e codificato per ricreare lo stesso fotogramma utilizzando una quantità minore di dati. Nella compressione il video, quindi, perde parte dei dati. In questo modo la codifica riduce le dimensioni del file audio-video diminuendo, così, l’occupazione di banda necessaria alla sua trasmissione. Questo compito è realizzato con modalità diverse dai diversi codec (abbrevia­zione per dei piccoli software, degli algoritmi nello specifico, di com­pressione/decompres­sione) esistenti per i diversi tipi di codifica. I codec quindi prima analizzano e trasformano la sequenza di immagini in un bitstream, un flusso di bit che equivale in sequenza binaria al video compresso. Dopo la trasmissione, lo stesso tipo di codec ricevono il bitstream e ricostruiscono la sequenza di immagini. Questa operazione è realizzata nel nostro caso da player multimediale come quelli di cui parleremo nel corso di questo capitolo. La prima fase è detta di encoding, o codifica, la seconda di decoding, o decodifica[3].



Codifica, bitstream e decodifica[4]


Le difficoltà della compressione nascono dal fatto di dover lavorare all’interno di specifiche tecniche precise, tenendo conto delle limitazioni del mezzo di comunicazione. Le dimensioni del file, quindi, sono impor­tanti per il trasferimento in rete dal momento che in una trasmissione in streaming, l’abbiamo più volte sottolineato, a determinare la qualità della riproduzione è il bit rate del collegamento dell’utente finale. Il file deve essere adeguato/adeguabile alle limitazioni della rete, altrimenti per quanto bello dal punto di vista autoriale/editoriale, non sarebbe poi fruibile, se non con lunghe e frustranti attese.


Tecniche di compressione dei dati: lossy e lossless

Le tecniche di compressione dei dati si dividono in due grandi categorie: lossy e lossles. Loss significa perdita e lossless senza perdita, per cui parliamo di

  • Compressione di dati lossless. I dati vengono compressi con un processo senza perdita d’informazioni che armonizza le ridon­danze nella codifica dei dati.
  • Compressione di dati lossy. I dati vengono compressi con un processo di perdita d’informazioni che sfrutta le ridondanze nell’utilizzo dei dati stessi.


Compressione di dati lossless

I codec per la compressione lossless organizzano i dati in maniera più efficiente e razionale. Consideriamo la sequenza AAAAAAAA. Questa viene compressa ed archiviata come 8A. In questo modo i caratteri immagazzinati sono due invece che otto, con un risparmio del 75 per cento dello spazio e senza perdita di dati. Un altro esempio di come operano i codec lossless è l’utilizzo degli acronimi la cosiddetta codifica Huffman[5] (dal nome dell’informatico statunitense David Huffman). Immaginiamo di operare la codifica di un testo che abbia per argomento il web dove l’acronimo www viene chiamato a sostituire il nome per esteso world wide web. Ogni volta che la parola world wide web appare viene immagazinata come www. Al momento dell’apertura del file, grazie al codec, che questa volta decomprime, avviene esattamente il contrario e tutti possono leggere world wide web per esteso[6]. Alla fine, la qualità del file decodificato è identica a quella originale, con un tasso di compressione tutto sommato modesto.

In ambito video la codifica lossless è poco utilizzata. Non diminuendo in maniera significativa le dimensioni del file questi è difficile da trasferire e da riprodurre una volta decodificato: occorrerebbero, in definitiva, appa­recchiature hardware come quelle pre-codifica.


Compressione di dati lossy

La compressione di dati lossy è quella più usata in ambito video sia per realizzare DVD, sia per lo streaming, sia per i dispositivi mobili[7]. I codec lossy raggiungono tassi molto più alti di riduzione dei file: non si limitano ad una riorganizzazione più razionale, ma scartano quei dati considerati ridondanti o non necessari. Ricreare, però, esattamente il file originale dopo la decompressione sarà impossibile e avremo un file simile, ma non uguale, all’originale.

L’azione dei codec lossy è drastica se finalizzata alla trasmissione in streaming. Vengono scartati infatti una gran quantità di dati, anche se si cerca di trattenere quanto più è possibile della qualità originale e le informazioni più importanti del file da codificare. La selezione operata dai codec non è scriteriata. I codec operano seguendo il principio del perceptual coding, della codifica percettiva, dal modo in cui gli essere umani percepiscono suoni ed immagini, su cosa il cervello ignori o percepisca di un segnale audio video. Non tutte le informazioni che ci arrivano dall’esterno vengono percepite, comprese e notate. Il cervello è come un filtro che seleziona la miriade di informazioni a cui siamo sottoposti: i suoni più alti, da un lato, gli oggetti luminosi e in movimento, dall’altro, attraggono maggiormente la nostra attenzione. I codec utilizzano questi criteri per decidere quali informa­zioni trattenere e quali invece scartare.


Metodologie di compressione: interframe ed intraframe

Nel processo di codifica i diversi fotogrammi non solo vengono analizzati, ma sono anche memorizzate le differenze e le relazioni tra questi. Dal momento che parliamo di fotogrammi digitalizzati, espressi in sequenze binarie, possiamo dire che vengono memo­rizzate le differenze nei valori.

I codec sono in grado di calcolare queste differenze. Per farlo in maniera efficace dividono il fotogramma in gruppi di pixel chiamati macroblocchi. In questa griglia di macroblocchi affiancati i codec non registrano le informazioni da tutti i blocchi singolarmente e poi le sommano, ma sono in grado di registrare anche solo le differenze tra i vari blocchi e riproporle per ricostruire il file multimediale al momento della decodifica. Questa modalità da risultati molto efficienti per quei video con poco o nessun movimento: il minor numero di dati possibile viene così memorizzato e trasferito[8].

I video che esprimono molto movimento, come può essere quello di una partita di basket o di un film d’azione, richiedono percorsi di com­pressione più complessi. Viste le numerose variazioni da fotogramma a fotogramma, la quantità di dati da memorizzare è molto più alta: vengono registrati più spesso interi fotogrammi, come se fossero una singola immagine fotografica e poi da qui vengono calcolate e me­morizzate le dif­ferenze. Analizzare i fotogrammi, da un lato, memorizzare le relazioni e le differenze tra i fotogrammi, dall’altro, è tipico delle codifiche interframe e intrafame le due grandi famiglie in cui si dividono i codec specializzati nella compressione dei flussi video.

  • La codifica intraframe definisce quei codec che di un flusso video codificano e decodificano un singolo fotogramma alla volta, come se fosse un’immagine fissa[9].
  • La codifica interframe, invece, definisce quei codec di un flusso video che codificano e decodificano le differenze che intervengono tra un fotogramma e un altro.

Con la compressione interframe vengono realizzati significativi risparmi di dimensioni perché la quantità di cambiamenti da registrare è minima. I bit non vengono sciupati per ricodificare gli elementi statici e possono essere concentrati su quella parte di fotogramma che cambia tra un fotogramma ed un altro. I rapporti di compressione vanno da 50:1 a 100:1 senza un degrado eccessivo della qualità[10].

Il punto di partenza di qualunque tipo di codifica è intraframe: il video codec lavora sul primo frame per intero, codificandolo pixel per pixel, poi nei successivi lavora solo sulle differenze, sugli elementi che cambiano: il primo frame viene definito keyframe, gli altri difference frame. La codifica tipica di uno stream video inizia con un keyframe e continua con una serie di difference frame. Dopo un po’ tocca ad un altro keyframe e poi ad altri difference frame. In una situazione ideale i keyframe hanno una qualità perfetta, e ogni difference frame registra tutte le informazioni che cambiano. Nella realtà il basso bit rate dei collegamenti dell’utente finale forza i video codec a risparmiare ulteriormente e ad avere sia keyframe meno definiti, sia un numero inferiore di keyframe nel flusso codificato con un sostanziale abbassamento della qualità finale del file codificato.

La codifica intraframe, che opera sul singolo fotogramma, può abbassare ulteriormente il bit rate del flusso audio video che viene codificato. Infatti il codec intraframe abbassa la qualità del keyframe di riferimento e a seguire tutti i difference frame che da questo dipendono: l’intero bit rate del file audio-video si abbassa ulteriormente, al punto da poter essere trasmesso. In teoria i codec video cercano di inviare quanti più keyframe possibile, ma nella pratica sono limitati dal bit rate dell’utente: quando ciò accade il video trasmesso in streaming inizialmente è ben definito e poi progressivamente la sua qualità degrada.

 


Formati di file



Note

[1] Utilizzeremo, in questo lavoro, i termini codifica e compressione, con la stessa valenza di significato. La compressione dei dati, però, non è peculiare della sola comunicazione Internet. La compressione avviene ogni qualvolta un prodotto video deve essere memorizzato su un supporto digitale (un DVD, ad esempio), trasferito su una diversa o nuova piattaforma digitale (la trasmissione on line oggi di vecchi film o dei palinsesti televisivi degli anni Ottanta) o distribuito in contemporanea su diverse piattaforme digitali (è il caso del segnale televisivo che viene trasmesso su un canale digitale terrestre e al contempo on line sul sito web dell’emittente televisiva, come in www.rai.tv ). [Torna su]

[2] Per capire l’effetto di compressione del file multimediale in funzione del bit rate, della velocità di trasmissione, vedi il paragrafo Bit Rate, del capitolo Struttura e modalità di trasmissione. [Torna su]

[3] I codec di cui parliamo in questo lavoro sono essenzialmente software. Il termine codec, però, può riferirsi anche a componenti hardware supportati da appositi software, a quel punto si parla di encoder e decoder. L’esempio più vicino a tutti noi è il decoder del segnale televisivo digitale terrestre. [Torna su]

[4] Fonte: Tagliasacchi Marco, Applicazioni di informatica, Formati multimediali e metadati: Video, pag. 14, http://home.dei.polimi.it/tagliasa/design.htm [Torna su]

[5] Mack Steve, Streaming Media Bible, 2002, Hoboken NJ (Wyley Publishing) , pag. 74 [Torna su]

[6] Per la codifica della immagini, ad esempio, programmi come WinZip e StuffIt utilizzano codec lossless, dove i file originali, prima della codifica sono uguali ai file una volta decodificati. [Torna su]

[7] Per le immagini, i file in formato .jpeg o .gif sono quelli che usano codec lossy. [Torna su]

[8] Come può essere un’intervista con le variazioni da fotogramma a fotogramma della sola posizione della testa dell’intervistato, ad esempio. [Torna su]

[9] Molte fotocamere compatte con funzione video utilizzano questa tecnica quando registrano filmati salvandoli in formato Motion-jpeg dove ogni frame è compresso in jpeg. Il rapporto di compressione varia da 10: 1 a 20:1 senza un’eccessiva perdita di qualità. Tagliasacchi Marco, Applicazioni di informatica, Formati multimediali e metadati: Video, pag. 17, http://home.dei.polimi.it/tagliasa/design.htm [Torna su]

[10] Ibidem, pag. 18. [Torna su]

 

 

Formati di file | Codec: Codificatori-Decodificatori | Player multimediali