Perchè il preloader dei filmati compressi mostra gli stessi bytes del filmato originale?

Utente HTML.it
chiede

Perchè il preloader dei filmati compressi mostra gli stessi bytes del filmato originale?

Redazione HTML.it
risponde
  • il sistema di compressione dei filmati del FlashMX, serve a ridurre le dimensioni dell’swf finale
  • i filmati compressi non hanno alcuna limitazione o differenza rispetto ai filmati non compressi, se non il peso, e non esiste alcun tipo di riduzione della qualità
  • i filmati vengono decompressi “on the fly” dal flash player, senza ritardi nella riproduzione
  • per essere letti, i filmati compressi necessitano del plugin 6
  • la compressione, attiva di default, può essere selezionata o meno dai Publish Settings, sezione flash:

Publish Settings

Publish Settings

Simulando lo scaricamento di un filmato compresso in modalità prova filmato, con lo Show Streaming, i comuni preloader si comportano in maniera peculiare. Nel pannello in alto a sinistra:

Show Streaming

Show Streaming

alla voce Loaded si legge 100% quando il preloader ne è ancora lontano, i tempi di scaricamento tra filmato compresso e non compresso sono uguali, e così i bytes caricati e totali.

In realtà, i dati forniti dallo Show Streaming non sono reali, e così nemmeno quelli del preloader. Vediamo perchè:

  • il file compresso, senza ombra di dubbio, pesa di meno e si scarica più velocemente del corrispondente non compresso. Questo si può valutare con uno scaricamento reale, e anche osservando le dimensioni del filmato una volta salvato nella cache del browser.
  • il preloader, restituisce in entrambi i casi i dati riferiti al filmato non compresso, ed è per questo che vengono restituiti valori maggiori di quelli reali
  • la proporzione tra bytes caricati e totali è comunque giusta perchè:
    • il preloader considera come bytes totali quelli non compressi
    • il preloader consirera come bytes caricati i corrispondenti originali di quelli compressi.

    Quindi, considerando un filmato dal peso di 100k e il relativo compresso da 50k, quando il preloader del filmato compresso dice di aver scaricato 80k (che sarebbero i 4/5 delle dimensioni originali, e paradossalmente 30k in più del peso effettivo del filmato), in realtà ne ha scaricati 40 (che sono appunto i 4/5 del filmato compresso).

    Questo perchè quando il flash player inizia a leggere le informazioni sul file, restituisce con il getBytesTotal le dimensioni dell’swf scritte nell’header, e che si riferiscono a quelle non compresse. Quando poi vengono valutati i bytes caricati tramite il getBytesLoaded, il player non restituisce il numero reale di bytes, ma, rispettando la proporzione, quelli del formato originale.

    Ne consegue che:

    • la percentuale di scaricamento è giusta, anche se i bytes sono falsati
    • calcolando la velocità di scaricamento sui bytes mostrati, questa sembra maggiore di quella effettiva.

    Ad esempio:

    filmato originale: 100k

    filmato compresso: 50k

    tempo di scaricamento del filmato originale: 20 secondi

    tempo di scaricamento del filmato compresso: 10 secondi

    In entrambi i casi, il preloader considera 100k totali, anche se il secondo filmato pesa la metà, ma i tempi di scaricamento sono decisamente diversi. Quindi l’utente finale ha l’impressione, valutando bytes e tempi, che il secondo filmato venga scaricato al doppio della velocità.