Vi siete mai chiesti come i video pesanti vengano trasmessi online senza intasare internet? La risposta è la compressione video!

In questo articolo, scopriremo i tre algoritmi magici che riducono i video enormi in file più piccoli e gestibili:

  • Algoritmo spaziale: Elimina le parti ripetitive all’interno di un’immagine.
  • Algoritmo temporale: Elimina le informazioni uguali tra le immagini di una sequenza.
  • Algoritmo entropico: Identifica le situazioni specifiche per ridurre i bit necessari.

Insieme, questi algoritmi permettono di trasmettere, archiviare e riprodurre video senza problemi.

L’articolo parlerà anche di come la compressione video si adatta allo streaming online, con formati come MP4 che combinano compressione MPEG-4 per il video e MP3 per l’audio.

Per finire, una tabella riassuntiva sui dati di compressione e una riflessione sul bitrate dei video.

LE COMPRESSIONI VIDEO:

dagli standard broadcast allo streaming in rete

 

Di Carlo Solarino

La compressione delle immagini video è uno degli argomenti più ostici e complessi dell’intera letteratura televisiva. Fino dall’avvio delle tecnologie digitali applicate al video (fine anni ’80), ci si è subito resi conto che i relativi file risultavano eccessivamente pesanti tanto per registrazioni (allora su nastro), quanto per l’emissione dei relativi segnali via antenna. Da ciò la messa a punto di appropriati standard creati da esperti di tutto il mondo e dalle principali aziende internazionali.

Da quei tempi a oggi sono stati così approvati, a cura dell’ITU, International Telecommunication Union, tre precisi standard dedicati, rispettivamente, alle immagini in SD, a quelle in HD e a quelle in UHD (Ultra High Definition) o 4K per arrivare poi, sia pure in versioni opportunamente adattate, a standard per ogni applicazione video, fino a quelle usate per il nostro smartphone.

Queste i tre standard televisivi:

  • MPEG-2, ITU-T H.222/H.262 per l’SD, pubblicato nel 1992;
  • MPEG-4, ITU-T H.264 per l’HD, pubblicato nel 2003 e noto come AVC (Advanced Video Coding);
  • MPEG-H Parte 2, ITU-T H.265 per l’UHD o 4K, pubblicato nel 2013 e noto come HEVC (High Efficiency Video Coding).

Senza entrare in dettaglio nelle loro complesse funzionalità, i tre standard si attengono a tre precisi algoritmi:

  • Algoritmo spaziale o “partitioning”, applicato ad ogni singola immagine;
  • Algoritmo temporale o ”previsioning”, applicato a intere sequenze;
  • Algoritmo entropico o “smart”, applicato ad ogni situazione capace di togliere informazioni ridondanti.

 

Figura 1 – Compressione spaziale

Algoritmo spaziale

Consiste nell’analizzare ogni singolo frame per eliminarne le parti ripetitive (Figura 1). Precisamente: ciascun frame viene ripartito in blocchi da 16×16 pixel (per l’SD) e in blocchi da 4×4 fino a 16×16 pixel (per l’HD e il 4K), con l’obiettivo di individuare possibili blocchi tra loro identici. A individuazione rinvenuta, il blocco viene cancellato e sostituito da un semplice comando di “copia e incolla” del blocco identico precedente.

L’incidenza di questa compressione, sull’insieme dell’intero processo, è la più elevata per un valore fino al 70% circa.

 

Figura 2 – Compressione temporale

 

Algoritmo temporale

Consiste in un’operazione analoga alla precedente, ma applicata a un’intera sequenza e sempre nell’intento di eliminare informazioni uguali e ripetitive. La sua esecuzione può venire sintetizzata su sei operazioni di codifica (e rispettiva decodifica eseguita dai Decoder presenti nei televisori e monitor):

  1. Ripartizione (Figura 2) dei video in GoP (Group of Pictures) di 12 frame (nel PAL) o di 15 frame (nell’NTSC);
  2. Ripartizione del primo frame di ciascun GoP in “MACROBLOCCHI” di 16×16 pixel e confronto di ciascuno di essi con i corrispondenti macro-blocchi del secondo frame (nell’SD) e con quelli del secondo, terzo e quarto frame (nell’HD e UHD, ottenendo così valori previsionali più precisi di quelli dell’SD);
  3. Creazione del “Vettore Movimento” da applicare a ciascun macro-blocco del primo frame per dare così vita all’intero GoP costruito in modalità virtuale. I macro-blocchi che non denunciano movimento (Vettore Movimento nullo) vengono semplicemente sostituiti da “copia e incolla” per i frame successivi;
  4. Conseguente costruzione dell’intero GoP in forma “virtuale”, partendo dal primo frame e applicando a ciascuno dei suoi macro-blocchi il relativo vettore movimento: è questa la vera compressione temporale o “previsioning”;
  5. Costruzione, inoltre, del primo frame (virtuale) del GoP successivo e confronto di tale frame con quello reale (attinto direttamente dalla sorgente: camera, mixer video o altro);
  6. In assenza di differenze tra questi due frame (virtuale e reale), l’intero GoP così costruito viene approvato e inoltrato; in presenza invece di differenze, le stesse differenze vengono rettificate tramite controlli a ritroso (“bidirectional”) sui frame del GoP, ottenendo così la sequenza corretta.

 

Il tempo di esecuzione dell’intero processo su ciascun GoP è di qualche secondo, che impone una breve attesa all’inizio della fruizione, che poi rimane fluida e continuativa per tutta la durata del video.

Questo, dunque, il processo di compressione temporale che consente di passare dal file di immagini reali (più pesanti) a quello virtuale costituito dalla successione dei soli macro-blocchi con i relativi vettori movimento. L’incidenza sulla compressione complessiva apportata dall’algoritmo temporale viene stimata sul 20% circa.

 

Figura 3 – Compressione entropica

 

Algoritmo entropico

Detto anche “Smart”, quest’algoritmo tende a individuare tutte le specifiche situazioni in grado di ridurre il numero dei bit di segnale. Per esempio, nella costruzione di un titolo che riporta tre soli colori e su livelli costanti (bianco, nero e giallo, come nella Figura 3), risulta sufficiente il ricorso a queste sole tre gradazioni anziché all’intera gamma cromatica dagli oltre 16 milioni di bit e relative sfumature (28 x 28 x 28).

L’algoritmo entropico incide in media, sull’intera compressione, per il 10% circa.

 

La compressione MP4, tipica dello streaming

Quanto finora visto riguarda strettamente il mondo della “televisione”, con il segnale di tipo broadcast rigorosamente standardizzato visto che i nostri tradizionali televisori di casa sono strumenti “dummy”, come si dice in gergo, ovvero non “smart”, cioè non dotati di capacità di elaborazione individuale per poter adattare, per esempio, la compressione da uno standard a un altro. Uscendo però dal mondo della Tv ed entrando in quello informatico con ciascuna unità (pc, tablet, smartphone e smart-tv incluse) dotata di propria intelligenza, ecco che la compressione video cambia notevolmente.

O, meglio, la stessa compressione si rifà sempre agli standard fin qui esaminati, ma con opportuni adattamenti ai vari tipi di impiego, grazie al fatto che il nostro terminale, a differenza del televisore, è comunque in grado di leggerli e interpretarli. E così YouTube, per esempio, adotta un formato diverso da Apple o da Microsoft, ma tutti facilmente decodificabili da parte del terminale per il loro riporto a schermo in chiaro.

Ciò detto è consuetudine indicare, nel gergo informatico, la compressione dei contenuti video trasmessi o acquisiti con l’”extension”, cioè con la stesura, MP4. Intendendo con ciò una compressione che, per il video, si rifà in prevalenza alla compressione per l’alta definizione MPEG-4 o H.264 e, per l’audio, alla ben nota compressione MP3.

 

Per concludere…

Possiamo infine riassumere i principali dati sulle compressioni con questa tabellina:

 

Definizione   Bitrate          Bitrate              Rapporto di

d’immagine  originale(*)   compresso(*) compressione(*)

———————————————————————-

SD                   162 Mbps     5-6 Mbps         1:30

———————————————————————-

HD                  900 Mbps     15 Mbps          1:60

———————————————————————-

4K                   3,5 Gbps       30 Mbps          1:120

Principali parametri delle compressioni    (*) Valori approssimati

 

Grazie alle compressioni diventa così possibile trasmettere – via etere o in rete – e archiviare programmi anche molto “pesanti” senza eccessive difficoltà: per esempio, un’ora di programma in HD non compresso pesa circa 400 TByte, mentre lo stesso programma compresso ne pesa soltanto 6 o 7.

Infine, una considerazione: il bitrate dei video originali è costante (CBR, Constant Bit Rate), mentre quello dei segnali compressi, considerato che la stessa compressione è funzione dell’aspetto dettagliato o uniforme delle immagini così come della rapidità o lentezza di ciascuna sequenza, il relativo bitrate risulta variabile (VBR, Variable Bit Rate).

NOTA

Questi stessi argomenti vengono trattati in modo approfondito nei due manuali dello stesso autore, “Saper fare televisione – I volume, La grammatica: immagini, segnali e streaming” e “La post-televisione – Strumenti, piattaforme e regole nell’era del video in rete”, entrambi pubblicati da Dino Audino Editore.