Salta al contenuto
Note per Studenti Esercizio - Buffer di riproduzione e streaming adattativo (domande ed esercizi del corso)

Esercizio - Buffer di riproduzione e streaming adattativo (domande ed esercizi del corso)

In questa pagina 5

Teoria: Streaming adattativo e DASHPer non stallare serve $R_C\le S$ (tasso di codifica non superiore al throughput), ma $R_C$ si controlla e $S$ no. Se $S<R_C$ la latenza cresce, i buffer dei router si riempiono e si perdono pacchetti; né il drop brutale né il transcoding in rete sono praticabili, la scalabilità (SVC) è parziale. La soluzione dominante è lo streaming adattativo (ABR) tirato dal client su HTTP: il video è diviso in $N$ segmenti da $T_S$ secondi, ciascuno in $K$ livelli di bit-rate $R_C(k)$ descritti nell'MPD; il client sceglie il livello $q(n)$ di ogni segmento con $T_D=\frac{T_SR_C(q)}{S_n}$. Il playout buffer $B(t)$ (in secondi di video) segue $B'=\frac S{R_C}$ durante lo stallo e $B'=\frac S{R_C}-1$ durante la riproduzione; si parte dopo $L$ segmenti e dopo uno stallo si riprende con $M$ nuovi segmenti. La QoE si modella con $J=\sum_n\lambda_1k_n-\lambda_2\lvert k_n-k_{n-1}\rvert-\phi(\Delta_n)-\lambda_3T_{ST}$. Gli algoritmi ABR sono basati su throughput, buffer o ibridi; MPEG-DASH standardizza MPD e segmenti, non il client.Streaming adattativo e DASH → (playout buffer B(t)B(t), pendenze SRC\frac S{R_C} e SRC−1\frac S{R_C}-1, parametri LL, MM, tSTt_{ST}, QoE JJ). Fonte: domande a risposta multipla ed esempi di preparazione, esercizi delle slide del corso di Reti di Calcolatori, Ing. Informatica UniPD 2025-26. Conti verificati in Python (simulazione del modello a fluido).

Richiami essenziali: B(t)B(t) si misura in secondi di video. Con SS costante in un intervallo: durante lo stallo o il buffering iniziale B′=SRCB'=\frac S{R_C}; durante la riproduzione B′=SRC−1B'=\frac S{R_C}-1. La riproduzione riparte dopo LL segmenti (inizio) o MM (dopo uno stallo). Il tempo di download di un segmento è TD=TSRC(k)SnT_D=\frac{T_SR_C(k)}{S_n}.

1. Domande di preparazione

Domanda 1. Un video ha frame rate 25 fps e dimensione media dei frame 40 kbit; è trasmesso su una rete con throughput costante S=1,2S=1{,}2 Mbit/s; il client ha un buffer iniziale di 2 secondi. Quale affermazione è corretta? (a) il buffer tende a riempirsi, (b) tende a svuotarsi, (c) il sistema è in equilibrio perfetto, (d) si verifica sempre rebuffering.

RC=f⋅B=25⋅40 000=1R_C=f\cdot B=25\cdot40\,000=1 Mbit/s. S=1,2>RC=1S=1{,}2>R_C=1: in riproduzione B′=1,21−1=+0,2>0B'=\frac{1{,}2}1-1=+0{,}2>0, il buffer si riempie di 0,20{,}2 s ogni secondo: (a). (b) falsa perché S>RCS>R_C; (c) falsa, servirebbe S=RCS=R_C (allora B′=0B'=0); (d) falsa: non ci sono stalli perché il buffer cresce.

Domanda 2. Stesso sistema, ma S=0,8S=0{,}8 Mbit/s e buffer iniziale di 5 secondi. Dopo quanto tempo dall'inizio del playout si svuota il buffer? (a) 25 s, (b) 20 s, (c) 10 s, (d) 50 s.

RC=1R_C=1 Mbit/s. All'inizio del playout B′=0,81−1=−0,2B'=\frac{0{,}8}1-1=-0{,}2: il buffer perde 0,20{,}2 s per ogni secondo di riproduzione. B(t)=5−0,2 t=0⇒t∗=50,2=25B(t)=5-0{,}2\,t=0\Rightarrow t^*=\frac5{0{,}2}=25 s: (a). (b) 20 s si avrebbe con B0=4B_0=4 s; (c) 10 s con B0=2B_0=2 s; (d) 50 s con B0=10B_0=10 s (o con B′=−0,1B'=-0{,}1): ricordare che il tempo di svuotamento è B0∣B′∣\frac{B_0}{|B'|} e non B0B_0 diviso RCR_C.

Domanda 3. Un video dura 50 s ed è a bit-rate costante RC=2R_C=2 Mbit/s. La rete ha S=3S=3 Mbit/s per i primi 10 s, poi S=1S=1 Mbit/s. Il client ha buffer iniziale 0 e riproduce subito. Quale affermazione è corretta? (a) il buffer cresce e poi si svuota causando re-buffering, (b) cresce e poi si svuota senza re-buffering, (c) è sempre vuoto, (d) cresce indefinitamente.

  • Primi 10 s: S>RCS>R_C, B′=32−1=+0,5B'=\frac32-1=+0{,}5: B(10)=5B(10)=5 s (il client riceve 33 Mbit/s e consuma 22: accumula 11 Mbit/s, cioè 1010 Mbit in 1010 s, pari a 102=5\frac{10}{2}=5 s di video).
  • Dopo 10 s: S=1S=1, B′=12−1=−0,5B'=\frac12-1=-0{,}5 (le slide scrivono per errore "0,5−1=0,50{,}5-1=0{,}5"): il buffer si svuota in 50,5=10\frac5{0{,}5}=10 s, cioè a t=20t=20 s.
  • A t=20t=20 s il video non è finito (dura 50 s): c'è re-buffering: (a). (b) è falsa: non si "svuota senza stallo" perché svuotare il buffer prima della fine del video è lo stallo; (c), (d) sono incompatibili con le pendenze.

Domanda 4 (GOP). (Domanda 20 di preparazione: 30 fps, GOP I+9PI+9P, BI=300B_I=300 kbit, P=0,2BIP=0{,}2B_I, S=2S=2 Mbit/s: RC=2,52>SR_C=2{,}52>S, il buffer tende a svuotarsi: vedi Esercizio - Stima del movimento, GOP e bit-rate del video (domande ed esercizi del corso).)

2. Esercizio 1 delle slide: buffering iniziale minimo

Sistema ABR con TS=1T_S=1 s, livelli RC(1)=500R_C(1)=500 kbit/s, RC(2)=1R_C(2)=1 Mbit/s, RC(3)=2R_C(3)=2 Mbit/s. Il buffering iniziale dura tSTt_{ST} secondi (è la durata, non la quantità di video). t=0t=0 è l'istante in cui arriva il primo bit. Throughput: S(t)=S1=0,4S(t)=S_1=0{,}4 Mbit/s per t∈(0,T)t\in(0,T), S(t)=S2=0,5S(t)=S_2=0{,}5 Mbit/s per t>Tt>T. Il client chiede sempre il livello 1 (RC=0,5R_C=0{,}5 Mbit/s). Trovare il minimo buffering iniziale che assicura nessuno stallo.

Soluzione. Pendenze con RC=0,5R_C=0{,}5: in (0,T)(0,T) S1RC=0,8\frac{S_1}{R_C}=0{,}8; dopo TT: S2RC=1\frac{S_2}{R_C}=1.

  • Se tST≥Tt_{ST}\ge T: il buffer cresce con pendenza 0,80{,}8 fino a TT, poi con pendenza 11 fino a tSTt_{ST} (ancora in buffering), poi in riproduzione con pendenza S2RC−1=0\frac{S_2}{R_C}-1=0: non si svuota mai. Nessuno stallo.
  • Se tST<Tt_{ST}<T: in (0,tST)(0,t_{ST}) B=0,8 tB=0{,}8\,t, quindi B(tST)=0,8 tSTB(t_{ST})=0{,}8\,t_{ST}. Poi si riproduce con S1<RCS_1<R_C: pendenza 0,8−1=−0,20{,}8-1=-0{,}2, quindi B(t)=0,8 tST−0,2(t−tST)=tST−0,2 tB(t)=0{,}8\,t_{ST}-0{,}2(t-t_{ST})=t_{ST}-0{,}2\,t, che si annulla a t∗=5 tSTt^*=5\,t_{ST}. Per non stallare prima che la pendenza diventi 0 (a t=Tt=T) serve t∗≥Tt^*\ge T, cioè 5 tST≥T5\,t_{ST}\ge T.
  • Minimo: tST∗=T5t_{ST}^*=\frac T5. In generale tST∗=T(1−S1RC)t_{ST}^*=T\left(1-\frac{S_1}{R_C}\right) (per S1/RC=0,8S_1/R_C=0{,}8 dà 0,2 T0{,}2\,T).

Controllo numerico: con T=10T=10 s, tST∗=2t_{ST}^*=2 s. Con tST=1,9t_{ST}=1{,}9 s il buffer si svuota poco prima di TT e c'è stallo; con tST=2t_{ST}=2 s il buffer arriva a 0 esattamente a t=10t=10 s e poi resta costante (in SRC−1=0\frac S{R_C}-1=0).

Variante costruita: RC=1R_C=1 Mbit/s, S=0,5S=0{,}5 Mbit/s per t<10t<10 s e S=2S=2 Mbit/s dopo. tST∗=10⋅(1−0,5)=5t_{ST}^*=10\cdot(1-0{,}5)=5 s: B(t)=0,5 tST−0,5 (t−tST)=tST−0,5 tB(t)=0{,}5\,t_{ST}-0{,}5\,(t-t_{ST})=t_{ST}-0{,}5\,t si annulla a t=2tST≥10t=2t_{ST}\ge10.

3. Esercizio 2 delle slide

Sistema con TS=1T_S=1 s, K=3K=3 livelli RC(1)=500R_C(1)=500 kbit/s, RC(2)=1R_C(2)=1 Mbit/s, RC(3)=2R_C(3)=2 Mbit/s; buffering iniziale di L=2L=2 segmenti; dopo il re-buffering si riparte con M=1M=1 segmento. t=0t=0 è l'arrivo del primo bit. Throughput: S1=1,5S_1=1{,}5 Mbit/s per t∈(0,2)t\in(0,2); S2=0,1S_2=0{,}1 Mbit/s per t∈(2,3)t\in(2,3); S3=1,8S_3=1{,}8 Mbit/s per t>3t>3 (secondi).

Domande 1-2. Se il client chiede sempre il livello massimo (q(n)=3q(n)=3), quando inizia il playout? Frequenza e durata del re-buffering?

Inizio del playout. Servono L=2L=2 segmenti da TSRC(3)=2T_SR_C(3)=2 Mbit: 4 Mbit totali. Nei primi 2 s: 2⋅1,5=32\cdot1{,}5=3 Mbit; nel secondo successivo: 1⋅0,1=0,11\cdot0{,}1=0{,}1 Mbit; mancano 4−3−0,1=0,94-3-0{,}1=0{,}9 Mbit, che a S3=1,8S_3=1{,}8 Mbit/s richiedono 0,91,8=0,5\frac{0{,}9}{1{,}8}=0{,}5 s: tST=3,5t_{ST}=3{,}5 s, con B(tST)=2B(t_{ST})=2 s (anche con la pendenza: B(2)=0,75⋅2=1,5B(2)=0{,}75\cdot2=1{,}5; B(3)=1,5+0,05=1,55B(3)=1{,}5+0{,}05=1{,}55; B(3,5)=1,55+0,9⋅0,5=2B(3{,}5)=1{,}55+0{,}9\cdot0{,}5=2 ✓, con pendenze SRC=1,52, 0,12, 1,82\frac{S}{R_C}=\frac{1{,}5}2,\ \frac{0{,}1}2,\ \frac{1{,}8}2).

Re-buffering. Da tSTt_{ST} si riproduce con S3=1,8<RC=2S_3=1{,}8<R_C=2: B′=1,82−1=−110B'=\frac{1{,}8}2-1=-\frac1{10}: il buffer perde 0,10{,}1 s al secondo e si svuota dopo 20,1=20\frac{2}{0{,}1}=20 s (t=23,5t=23{,}5 s). In quel momento sono stati ricevuti 2+20⋅1,8/2=2+18=202+20\cdot1{,}8/2=2+18=20 s di video: tutti i segmenti arrivati sono stati riprodotti, B=0B=0. Per riprendere servono M=1M=1 segmento (quello corrente è già interamente scaricato): 2 Mbit1,8 Mbit/s=109=1,11\frac{2\text{ Mbit}}{1{,}8\text{ Mbit/s}}=\frac{10}9=1{,}11 s, durante i quali B′=SRC=0,9B'=\frac S{R_C}=0{,}9 e quindi B=1B=1 s. Poi B′=−0,1B'=-0{,}1 e il buffer si svuota in 1010 s. Ogni stallo dura 109\frac{10}9 s e si ripete ogni 10+109=11,1‾10+\frac{10}9=11{,}\overline1 s.

Grafico interattivo: Esercizio 2, strategia sempre livello 3: B(t) cresce fino a 2 s a t = 3,5 s, poi cala di 0,1 s/s fino a 0 (t = 23,5 s); ogni stallo dura 1,11 s e il ciclo si ripete ogni 11,11 s

Domanda 3. Mostrare che la regola q(n)=3q(n)=3 se n mod 5≠3n\bmod5\ne3, q(n)=2q(n)=2 se n mod 5=3n\bmod5=3 evita il re-buffering.

Il playout inizia a t=3,5t=3{,}5 s con B=2B=2 s (i primi due segmenti sono a livello 3, come prima). Il segmento 3 è a livello 2 (RC=1R_C=1 Mbit/s): tempo di download TD(3)=1⋅11,8=59T_D(3)=\frac{1\cdot1}{1{,}8}=\frac59 s; durante il download B′=1,81−1=+0,8>0B'=\frac{1{,}8}1-1=+0{,}8>0: al termine B=2+59⋅0,8=2,4‾B=2+\frac59\cdot0{,}8=2{,}\overline4 s. I segmenti 4, 5, 6, 7 sono a livello 3: ciascuno richiede 21,8=109\frac{2}{1{,}8}=\frac{10}9 s, in totale 4⋅109=409=4,4‾4\cdot\frac{10}9=\frac{40}9=4{,}\overline4 s, con B′=−0,1B'=-0{,}1: al termine B=2,4‾−0,44‾=2B=2{,}\overline4-0{,}4\overline4=2 s. Siamo di nuovo nella situazione di t=3,5t=3{,}5 s: il ciclo si ripete ogni 5 segmenti (periodo 59+409=5\frac59+\frac{40}9=5 s). Il buffer oscilla tra 2 e 2,4‾2{,}\overline4 s e non si svuota mai.

Grafico interattivo: Esercizio 2, domanda 3: il livello 2 al terzo segmento di ogni cinque tiene B(t) tra 2 s e 2,44 s: nessuno stallo

Domanda 4. La strategia q1q_1 (33 tranne ogni n mod 5=3n\bmod5=3) è meglio di q2≡2q_2\equiv2 (sempre livello 2)? Usando J=∑n[λ1kn−λ2∣kn−kn−1∣−ϕ(Δn)]−λ3TSTJ=\sum_n\left[\lambda_1k_n-\lambda_2\lvert k_n-k_{n-1}\rvert-\phi(\Delta_n)\right]-\lambda_3T_{ST}:

  • q1q_1: nessuno stallo (domanda 3). ∑kn=3⋅4N5+2⋅N5=145N\sum k_n=3\cdot\frac{4N}5+2\cdot\frac N5=\frac{14}5N; il livello cambia due volte ogni 5 segmenti (3→23\to2 e 2→32\to3): ∑∣Δk∣=25N\sum\lvert\Delta k\rvert=\frac25N. J1=N(145λ1−25λ2)−λ3T1J_1=N\left(\frac{14}5\lambda_1-\frac25\lambda_2\right)-\lambda_3T_1.
  • q2q_2: nessuno stallo (controllo: RC=1R_C=1 Mbit/s; il playout parte con 2 segmenti da 1 Mbit: 22 Mbit a 1,51{,}5 Mbit/s richiedono 43=1,33\frac43=1{,}33 s, tST=1,33t_{ST}=1{,}33 s, B=2B=2 s; poi B′=+0,5B'=+0{,}5 fino a t=2t=2 (B=2,33B=2{,}33), B′=0,1−1=−0,9B'=0{,}1-1=-0{,}9 in (2,3)(2,3) (B=1,43B=1{,}43), poi B′=0,8B'=0{,}8: sempre positivo). ∑kn=2N\sum k_n=2N, nessun cambio: J2=2Nλ1−λ3T2J_2=2N\lambda_1-\lambda_3T_2 con T2=1,33T_2=1{,}33 s.
  • J1−J2≈N(45λ1−25λ2)−λ3(T1−T2)J_1-J_2\approx N\left(\frac45\lambda_1-\frac25\lambda_2\right)-\lambda_3(T_1-T_2), con T1−T2=3,5−1,33=2,17T_1-T_2=3{,}5-1{,}33=2{,}17 s. Per NN grande il primo termine domina: J1>J2J_1>J_2 se e solo se λ1>λ22\lambda_1>\frac{\lambda_2}2. Con λ1=1\lambda_1=1, λ2=1\lambda_2=1: J1−J2≈0,4N−2,17λ3J_1-J_2\approx0{,}4N-2{,}17\lambda_3: q1q_1 vince per NN non troppo piccolo. Con λ2=3\lambda_2=3: −0,4N<0-0{,}4N<0, q2q_2 vince. La scelta dipende dai pesi, fissati con esperimenti soggettivi.

4. Esempio con una sequenza di download

Con L=2L=2, M=1M=1, N=6N=6 e tempi di download dati (esempio delle slide): fase 1 (buffering iniziale, B′=SRCB'=\frac S{R_C}, più ripido quando un segmento si scarica in fretta); fase 2 (riproduzione con TD<TST_D<T_S: B′=SRC−1>0B'=\frac S{R_C}-1>0, il buffer cresce piano); fase 3 (il throughput crolla, TD(4)T_D(4) molto grande: B′<0B'<0, il buffer si svuota); fase 4 (stallo con B=0B=0, B′=SRC≥0B'=\frac S{R_C}\ge0: il buffer ricomincia a salire); fase 5 (riprende quando un segmento intero, M=1M=1, è scaricato); fase 6 (due segmenti scaricati con S>RCS>R_C: il buffer cresce); fase 7 (fine: si riproduce senza ricevere più, B′=−1B'=-1). Con L=1L=1 il buffer all'avvio è più piccolo e lo stallo arriva prima e dura di più.

Errori tipici

  • Misurare B(t)B(t) in bit invece che in secondi di video.
  • Usare SRC\frac S{R_C} come pendenza in riproduzione: manca il −1-1 (che rappresenta il consumo di 1 secondo di video al secondo).
  • Calcolare il tempo di svuotamento come B0/RCB_0/R_C invece di B0/∣B′∣B_0/\lvert B'\rvert.
  • Dimenticare che durante lo stallo non si consuma (B′=SRCB'=\frac S{R_C}) e che dopo lo stallo si riprende solo con MM segmenti completi.
  • Confondere LL (segmenti prima dell'avvio) ed MM (segmenti prima della ripresa), oppure tSTt_{ST} (istante di avvio) con il numero di segmenti.
  • Scambiare la scelta del livello (la fa il client, segmento per segmento) con una decisione del server o della rete.

Versione ripasso

Regole. BB in secondi di video. Stallo o buffering iniziale: B′=SRCB'=\frac S{R_C}; riproduzione: B′=SRC−1B'=\frac S{R_C}-1 (riempie se S>RCS>R_C, svuota se S<RCS<R_C). Svuotamento dopo B0∣B′∣\frac{B_0}{|B'|}. TD=TSRC(k)SnT_D=\frac{T_SR_C(k)}{S_n}. Ripresa dopo MM segmenti completi; avvio dopo LL.

Domande.

  • 25 fps ×\times 40 kbit =RC=1=R_C=1 Mbit/s, S=1,2S=1{,}2: B′=+0,2B'=+0{,}2, il buffer si riempie.
  • S=0,8S=0{,}8, B0=5B_0=5 s: B′=−0,2B'=-0{,}2, vuoto a t∗=50,2=25t^*=\frac5{0{,}2}=25 s.
  • RC=2R_C=2, S=3S=3 per 10 s (B′=0,5B'=0{,}5, B(10)=5B(10)=5 s), poi S=1S=1 (B′=−0,5B'=-0{,}5): vuoto a t=20t=20 s, video da 50 s ⇒\Rightarrow re-buffering (la slide scrive per errore B′=+0,5B'=+0{,}5).
  • GOP I+9P (BI=300B_I=300 kbit, P=0,2BIP=0{,}2B_I, 30 fps, S=2S=2): RC=2,52>SR_C=2{,}52>S, il buffer si svuota.

Slide, esercizio 1 (RC=0,5R_C=0{,}5 Mbit/s, S1=0,4S_1=0{,}4 per t<Tt<T, S2=0,5S_2=0{,}5 dopo): pendenze 0,80{,}8, poi 1 (buffering) o 0 (riproduzione). Se tST<Tt_{ST}<T: B(t)=tST−0,2 tB(t)=t_{ST}-0{,}2\,t, vuoto a 5 tST5\,t_{ST}; serve 5 tST≥T5\,t_{ST}\ge T: tST∗=T5=T(1−S1RC)t_{ST}^*=\frac T5=T(1-\frac{S_1}{R_C}) (T=10T=10: 2 s). Variante RC=1R_C=1, S=0,5S=0{,}5 per 10 s, poi 2: tST∗=5t_{ST}^*=5 s.

Slide, esercizio 2 (TS=1T_S=1 s, livelli 0,5/1/20{,}5/1/2 Mbit/s, L=2L=2, M=1M=1; S=1,5S=1{,}5 in (0,2)(0,2), 0,10{,}1 in (2,3)(2,3), 1,81{,}8 dopo).

  • Sempre livello 3: 4 Mbit servono; 3+0,13+0{,}1 Mbit entro t=3t=3, restano 0,90{,}9 Mbit a 1,81{,}8: 0,50{,}5 s ⇒\Rightarrow tST=3,5t_{ST}=3{,}5 s, B=2B=2 s. Poi B′=1,82−1=−0,1B'=\frac{1{,}8}2-1=-0{,}1: vuoto dopo 20 s (t=23,5t=23{,}5 s). Stallo di M=1M=1 segmento: 21,8=109=1,11\frac2{1{,}8}=\frac{10}9=1{,}11 s (B′=0,9B'=0{,}9, B=1B=1 s); poi 10 s di riproduzione: periodo 11,1‾11{,}\overline1 s.
  • Livello 3 tranne n mod 5=3n\bmod5=3 (livello 2): segmento 3: TD=59T_D=\frac59 s, B′=0,8B'=0{,}8, B=2,4‾B=2{,}\overline4 s; segmenti 4-7: 409=4,4‾\frac{40}9=4{,}\overline4 s a −0,1-0{,}1, B=2B=2 s; periodo 5 s; B∈[2;2,4‾]B\in[2;2{,}\overline4], nessuno stallo.
  • QoE: J1=N(145λ1−25λ2)−λ3T1J_1=N(\frac{14}5\lambda_1-\frac25\lambda_2)-\lambda_3T_1; sempre livello 2: nessuno stallo, tST=1,33t_{ST}=1{,}33 s, J2=2Nλ1−λ3T2J_2=2N\lambda_1-\lambda_3T_2; J1−J2≈N(45λ1−25λ2)−λ3(3,5−1,33)J_1-J_2\approx N(\frac45\lambda_1-\frac25\lambda_2)-\lambda_3(3{,}5-1{,}33): J1>J2  ⟺  λ1>λ22J_1>J_2\iff\lambda_1>\frac{\lambda_2}2 per NN grande.

Sequenza di download (L=2L=2, M=1M=1): buffering iniziale →\to crescita lenta →\to crollo del throughput e svuotamento →\to stallo →\to ripresa dopo un segmento →\to crescita →\to coda finale B′=−1B'=-1. L=1L=1: stalli prima e più lunghi.

Errori tipici: BB in bit; pendenza SRC\frac S{R_C} in riproduzione (manca il −1-1); svuotamento come B0/RCB_0/R_C; consumo durante lo stallo; LL contro MM; scelta del livello attribuita al server.

Teoria: Streaming adattativo e DASHPer non stallare serve $R_C\le S$ (tasso di codifica non superiore al throughput), ma $R_C$ si controlla e $S$ no. Se $S<R_C$ la latenza cresce, i buffer dei router si riempiono e si perdono pacchetti; né il drop brutale né il transcoding in rete sono praticabili, la scalabilità (SVC) è parziale. La soluzione dominante è lo streaming adattativo (ABR) tirato dal client su HTTP: il video è diviso in $N$ segmenti da $T_S$ secondi, ciascuno in $K$ livelli di bit-rate $R_C(k)$ descritti nell'MPD; il client sceglie il livello $q(n)$ di ogni segmento con $T_D=\frac{T_SR_C(q)}{S_n}$. Il playout buffer $B(t)$ (in secondi di video) segue $B'=\frac S{R_C}$ durante lo stallo e $B'=\frac S{R_C}-1$ durante la riproduzione; si parte dopo $L$ segmenti e dopo uno stallo si riprende con $M$ nuovi segmenti. La QoE si modella con $J=\sum_n\lambda_1k_n-\lambda_2\lvert k_n-k_{n-1}\rvert-\phi(\Delta_n)-\lambda_3T_{ST}$. Gli algoritmi ABR sono basati su throughput, buffer o ibridi; MPEG-DASH standardizza MPD e segmenti, non il client.Streaming adattativo e DASH →.

Formula generale del buffering minimo. Con S1<RCS_1<R_C per t<Tt<T e S2≥RCS_2\ge R_C dopo: tST∗=T(1−S1RC)t_{ST}^*=T\left(1-\frac{S_1}{R_C}\right). Con LL segmenti iniziali: servono TS∑n≤LRC(q(n))T_S\sum_{n\le L}R_C(q(n)) bit prima dell'avvio.

Teoria collegata