Domanda

Sto costruendo un sito Flash di grandi dimensioni (AS3) che utilizza enormi file FLV come video di transizione da una sezione all'altra. I file FLV sono 1280x800 e vengono scalati a 1680x1050 (gran parte del quale non viene visualizzato agli utenti con schermi più piccoli), e sono circa 5-8 secondi ciascuno. Sto che codifica per il video utilizzando di On2 codec ad alta definizione, VP6-S, e la riproduzione è abbastanza buona, con giocatori FLV nativi, Quicktime Perian attrezzata e semplice riproduzione FLV proof-of-concept applicazioni integrate in AS3.

Il problema che sto avendo è che nel contesto del sito vero e proprio, la riproduzione non è così liscia; il framerate non è abbastanza buono come dovrebbe essere, e più problematico, c'è jerkiness occasionale e perdita di frame (a volte pausa il video per tutto il tempo come un quarto di secondo o giù di lì). La mia ipotesi è che questo è causato da garbage collection in Flash Player, che avviene nondeterministically ed è quindi difficile da prova e di controllo per.

Io sto usando una singola istanza di FLVPlayback, per riprodurre i video; Originariamente ho stava usando oggetti NetStream e così via direttamente ma passato a FLVPlayback per questo motivo . Qualcuno ha sperimentato questo tipo di scatti con FLVPlayback (o più in generale, con il video Flash ad alta definizione)? Ho ragione su GC essere il colpevole qui, e se è così, c'è un modo per evitare che durante la riproduzione di queste transizioni ad alta intensità di sistema?

È stato utile?

Soluzione

scatti in riproduzione FLV / F4V non è certo il risultato di raccolta dei rifiuti - il video è in realtà mantenuto in memoria fino a quando non è completamente scaricata, quindi non c'è la raccolta dei rifiuti che si svolgono a tutti (a meno che non hai fatto qualcosa di non ortodosso come mettere il video su un contenitore con cacheAsBitmap impostata su true).

Il passaggio a F4Vs se non hai bisogno di caratteristiche specifiche FLV (come il link inviato da daidai suggerisce - dichiarazione di non responsabilità, è il mio blog) avrebbe aiutato, ma nel complesso, bisogna anche essere consapevoli di tutto ciò che è impatto compositing del video sullo schermo. Perché una grande dimensione delle forze di video tutto quello che è sovrapponendola di essere ri-renderizzati, ogni piccolo oggetto può avere un grande impatto sulle prestazioni.

Hai cose in cima al video? Prova ad ottenere liberarsi di loro, se possibile, o l'impostazione cacheAsBitmap su true (se non sono animati). Questo è particolarmente buono per i disegni vettoriali complessi o testo (bitmap / immagini sono molto più veloci a disegnare). Se hanno diversi metodi di fusione, sei specie di vite - si può utilizzare il metodo di fusione normale invece

?

Hai qualcosa sotto il video? Se è così, sbarazzarsi di loro, mentre il video è in riproduzione (visibilità appena impostato su false).

Per controllare il rendering inutili, in qualche modo mettere in pausa il video, tasto destro del mouse, attivare la 'Mostra le regioni ridisegnate' (lettore di debug). Vedete disegnare il quadrato rosso continuamente? Poi c'è qualcosa che accade lì sullo sfondo, meglio sbarazzarsi di esso.

Avete qualcosa accade sullo sfondo tramite onEnterFrame o timer / intervalli? Prova pausa di esso.

è il 30fps video e una rappresentazione di CG (ad esempio, è possibile utilizzare il motion blur)? Se sì, provare il rendering a 24 fps, invece, o qualcosa tra -. Buona qualità ancora, ma molto meno dati da decodificare e disegnare

È possibile utilizzare i video più piccoli? Anche se si sta ancora rendendoli allo stesso formato più grande, dati pixel meno per decodificare e rendering aiuta immensamente, e l'impatto in termini di qualità può essere abbastanza piccola.

Che praticamente riassume tutto. Come liberarsi di tutto il resto sullo schermo è di solito la vostra priorità numero 1 anche se.

Altri suggerimenti

Hai provato la codifica dei video in formato H.264, invece? Flash Player supporta loro per qualche tempo ormai, si può finire per lavorare meglio. Questo è ciò che la maggior parte delle persone che fanno uso di video HD in Flash (ad esempio Youtube, Vimeo, ecc).

Proprio come un test, prova fa parte di un video 1080p HD su youtube e vedere se questo pause a tutti per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top