Vai al contenuto
Whatplay
Tutte le guide

Riproduzione

HLS e DASH: come funziona lo streaming adattivo

4 min di lettura

Se ti è capitato di vedere un video che parte sfocato e dopo pochi secondi diventa nitido, o che perde qualità quando il Wi-Fi è debole, hai visto lo streaming adattivo in azione. Quasi tutto il video su internet viene distribuito così, con due sistemi: HLS e DASH. Funzionano in modo simile, e capirli spiega molti comportamenti che sembrano guasti ma non lo sono.

L’idea: dividere in pezzi e offrire più qualità

Invece di un file enorme, il server conserva il video diviso in segmenti di pochi secondi. E non una volta sola, ma diverse: lo stesso film in 1080p, in 720p, in 480p, ogni versione con la sua velocità di trasmissione, o bitrate. Il player scarica prima un indice, il manifest, che gli dice quali versioni ci sono e dove si trova ogni pezzo. Poi richiede i segmenti uno alla volta e, in ogni momento, sceglie la qualità che secondo lui la tua connessione può sostenere.

I vantaggi sono chiari: il video parte in fretta perché inizia con pezzi leggeri, si adatta alla rete senza interrompersi e permette di saltare in qualsiasi punto scaricando solo il necessario. Le trasmissioni in diretta funzionano allo stesso modo: il manifest si aggiorna man mano con i nuovi segmenti.

HLS

HLS (HTTP Live Streaming) è stato creato da Apple ed è il più diffuso. Il suo manifest è un file di testo con estensione .m3u8, e ce ne sono di due tipi.

La playlist master elenca le qualità disponibili. Ognuna riporta la sua larghezza di banda, la sua risoluzione e i suoi codec:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2"
1080p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2500000,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
720p/index.m3u8

La media playlist di ogni qualità elenca i suoi segmenti e la durata di ciascuno:

#EXTM3U
#EXT-X-TARGETDURATION:6
#EXTINF:6.0,
segmento-001.ts
#EXTINF:6.0,
segmento-002.ts
#EXT-X-ENDLIST

Il tag #EXT-X-ENDLIST indica che il video è completo, cioè on demand. Se non c’è, è una trasmissione in diretta e il player richiede di nuovo la playlist ogni pochi secondi. I segmenti possono essere TS o fMP4 (MP4 frammentato, che si riconosce dal tag #EXT-X-MAP). L’audio in altre lingue e i sottotitoli possono essere tracce separate, dichiarate con #EXT-X-MEDIA.

A proposito, il fatto che il manifest di HLS abbia la stessa estensione di molte liste di video crea confusione; lo chiariamo in M3U, M3U8 e W3U.

DASH

DASH (Dynamic Adaptive Streaming over HTTP, o MPEG-DASH) è uno standard internazionale aperto. Il suo manifest è un file XML con estensione .mpd. Organizza il contenuto in insiemi di adattamento (il video, l’audio di ogni lingua, i sottotitoli) e, dentro ciascuno, in rappresentazioni, che sono le qualità. Lo usano molte piattaforme e molti siti. Per chi guarda, la differenza con HLS è quasi nulla: cambia il formato dell’indice, non l’idea.

Perché cambia la qualità?

Il player misura quanto velocemente gli arrivano i segmenti e quanti secondi ha già scaricato in anticipo, il buffer. Se il download ha margine, alza la qualità; se è al limite, la abbassa prima di restare senza video. Per questo:

  • L’avvio di solito è sfocato: il player non sa ancora quanto rende la tua connessione e parte con prudenza.
  • La qualità scende quando un altro dispositivo di casa scarica qualcosa o quando ti allontani dal router.
  • Ci vuole qualche secondo perché risalga anche se la rete migliora, perché cambia al segmento successivo, non all’istante.
  • Un video può non superare i 720p anche se hai la fibra, se il server non offre di più o se il dispositivo non riesce a decodificare la versione superiore.

Che la qualità cali per un po’ non è un guasto: è il sistema che evita un’interruzione. Se le interruzioni sono frequenti, guarda interruzioni, scatti e caricamento lento.

Diretta, ritardo e finestra

In una trasmissione in diretta, il player non si posiziona sull’ultimo secondo trasmesso, ma qualche segmento più indietro, per avere margine. Per questo una diretta su internet di solito va in ritardo rispetto alla televisione tradizionale, e due dispositivi possono non essere allineati. Alcune trasmissioni permettono di tornare indietro per un po’, quanto dura la finestra del manifest; altre offrono solo gli ultimi segmenti.

Crittografia e DRM

HLS permette di cifrare i segmenti con AES-128 e una chiave che si scarica da un indirizzo. Questo non è DRM: qualsiasi player HLS lo apre se riesce a scaricare la chiave, e lo fa anche Whatplay. Il DRM (Widevine, PlayReady, FairPlay) è un’altra cosa: un sistema di licenze legato al dispositivo, usato dalle piattaforme a pagamento, che in HLS si dichiara con metodi come SAMPLE-AES e in DASH con il tag ContentProtection. Whatplay non riproduce contenuti con DRM; lo spieghiamo in il browser di Whatplay e il DRM.

HLS e DASH in Whatplay

  • Puoi mettere l’indirizzo di un .m3u8 o di un .mpd in una lista, o aprirlo una volta con «Aggiungi lista» e «Riproduci senza salvare».
  • La qualità si sceglie da sola. In «Opzioni» del player vedi la risoluzione e i Mb/s di quello che stai guardando.
  • Nel browser, quando un sito usa HLS o DASH, il pannello «Video di questa pagina» indica fino a quale risoluzione arriva («fino a 1080p») e quante qualità ha.
  • Quando lo invii a un Chromecast, di solito è la TV a scaricare i segmenti da sola. Se il server chiede dati di accesso che la TV non può inviare, il telefono fa da ponte e deve restare sulla rete Wi-Fi.

Altre guide

Non hai trovato la risposta?

Scrivici e ti aiutiamo.

Contattaci

Telegram