▶ Video e streaming

Latenza nelle dirette streaming: RTMP, SRT, WebRTC e LL-HLS

Da dove nasce il ritardo di una diretta, quanto pesano encoder, protocollo, segmenti e buffer del lettore e quali tecnologie riducono la latenza.

In una diretta streaming, la latenza è il tempo che passa tra un evento davanti alla telecamera e il momento in cui lo spettatore lo vede. Per un concerto trasmesso online qualche decina di secondi di ritardo non disturba nessuno; per un'asta, una lezione con domande dal pubblico o una videochiamata, anche due secondi sono troppi. Ridurre la latenza ha sempre un costo, in stabilità o in complessità, quindi la prima domanda da porsi è: quanto ritardo posso permettermi?

Da dove viene il ritardo

La latenza totale è la somma di molti piccoli ritardi lungo la catena:

  1. acquisizione: la telecamera e la scheda di acquisizione introducono qualche fotogramma di ritardo;
  2. codifica: l'encoder deve analizzare i fotogrammi prima di comprimerli; i fotogrammi B e l'analisi in avanti aumentano il ritardo;
  3. invio al server: il protocollo di contribuzione, come RTMP o SRT, aggiunge un buffer di sicurezza;
  4. transcodifica: il server crea le diverse qualità per lo streaming adattivo;
  5. segmentazione: con HLS e DASH il video viene diviso in segmenti, e un segmento non può essere inviato finché non è completo;
  6. distribuzione: la CDN porta i segmenti vicino agli spettatori;
  7. buffer del lettore: il lettore tiene da parte alcuni segmenti per non bloccarsi se la rete rallenta.

Gli ultimi due punti, segmentazione e buffer, sono quasi sempre i più pesanti nello streaming tradizionale.

Le fasce di latenza

Fascia Ordine di grandezza Tecnologie tipiche Uso
standard decine di secondi HLS e DASH con segmenti lunghi eventi, intrattenimento
ridotta pochi secondi LL-HLS, DASH a bassa latenza, CMAF a blocchi sport, interazione via chat
quasi in tempo reale meno di un secondo WebRTC videochiamate, aste, regia remota

I protocolli di contribuzione

Sono quelli che portano il segnale dall'encoder al server.

RTMP

RTMP è stato a lungo lo standard per inviare dirette alle piattaforme ed è ancora accettato quasi ovunque. Lavora su TCP, quindi in caso di perdita di pacchetti ritrasmette i dati e può accumulare ritardo. Ha limiti sui codec moderni, anche se esistono estensioni recenti per superarli.

SRT

Secure Reliable Transport è un protocollo open source pensato per trasportare video su reti imperfette, come Internet pubblica. Lavora su UDP e recupera i pacchetti persi entro una finestra di latenza configurabile: più è ampia, più la trasmissione è robusta, ma maggiore è il ritardo. Supporta la cifratura ed è molto usato nella produzione remota.

WebRTC e WHIP

WebRTC è nato per la comunicazione in tempo reale nei browser. È progettato per tenere la latenza al minimo e, quando la rete peggiora, preferisce ridurre la qualità piuttosto che accumulare ritardo. Il protocollo WHIP standardizza l'invio di un flusso WebRTC a un server, rendendolo utilizzabile anche dagli encoder di trasmissione.

I protocolli di distribuzione

Sono quelli con cui gli spettatori ricevono il video.

HLS e DASH tradizionali

Con segmenti di 6 secondi e un lettore che ne tiene tre in buffer, si arriva facilmente a 20-30 secondi di ritardo complessivo. In cambio si ottengono grande stabilità, compatibilità e scalabilità tramite CDN.

Le varianti a bassa latenza

LL-HLS e DASH a bassa latenza dividono i segmenti in parti più piccole, che possono essere inviate e riprodotte prima che il segmento intero sia completo. Il lettore può così restare molto più vicino al punto «in diretta» senza rinunciare alla distribuzione via HTTP.

WebRTC verso lo spettatore

Offre la latenza minima, ma scalare a un pubblico molto ampio è più complesso e costoso, perché non si appoggia alla cache tradizionale delle CDN.

Impostazioni che riducono il ritardo

Anche senza cambiare tecnologia si può intervenire:

  • intervallo tra keyframe più breve, per esempio 1 o 2 secondi, così i segmenti possono essere più corti;
  • segmenti più brevi nella configurazione del server;
  • preset di codifica pensati per la bassa latenza, con meno analisi in avanti e senza fotogrammi B se necessario;
  • buffer del lettore ridotto, sapendo che diventerà più sensibile alle variazioni di rete.

Con x264 l'opzione -tune zerolatency disattiva gli strumenti che introducono ritardo, al prezzo di una minore efficienza di compressione.

Il compromesso inevitabile

Meno buffer significa meno margine. Una diretta a bassissima latenza su una connessione instabile mostrerà più spesso cali di qualità o interruzioni. Per un evento importante conviene misurare la stabilità della connessione in uscita, prevedere una connessione di riserva e scegliere la latenza più alta compatibile con il tipo di interazione richiesta.

In sintesi

  • La latenza è la somma di acquisizione, codifica, invio, segmentazione, distribuzione e buffer.
  • Nello streaming tradizionale pesano soprattutto segmenti e buffer del lettore.
  • RTMP e SRT servono a portare il segnale al server; SRT è più robusto su reti imperfette.
  • LL-HLS e DASH a bassa latenza scendono a pochi secondi; WebRTC sotto il secondo.
  • Ridurre la latenza riduce il margine contro i problemi di rete.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche