Pregunta

Estoy construyendo un sitio flash grande (AS3) que utiliza grandes como videos FLV de transición de una sección a otra. Los archivos FLV son 1280x800 y se están ampliando a 1680x1050 (muchos de los cuales no se muestra a los usuarios con pantallas más pequeñas), y son alrededor de 5-8 segundos cada uno. Estoy codifican los vídeos utilizando de On2 codec de alta definición, VP6-S, y la reproducción es bastante bueno con los jugadores FLV nativos, Quicktime equipado Perian, y la reproducción de FLV sencilla prueba de concepto de aplicaciones integradas en AS3.

El problema que estoy teniendo es que en el contexto del sitio real, la reproducción no es tan suave; la tasa de fotogramas no es tan bueno como debería ser, y más problemático, hay sacudidas ocasionales y pérdida de fotogramas (a veces pausar el video durante el tiempo que un cuarto de segundo más o menos). Mi conjetura es que esto es causado por la recolección de basura en el reproductor de Flash, lo que sucede nondeterministically y por tanto es difícil de prueba y de control para.

Estoy usando una sola instancia de FLVPlayback para reproducir los vídeos; Originalmente era el uso de objetos NetStream y así sucesivamente directamente pero cambió a FLVPlayback para esta razón . Alguien ha experimentado este tipo de sacudidas con FLVPlayback (o más generalmente, con Flash video de alta definición)? Estoy en lo cierto acerca de GC es el culpable aquí, y si es así, ¿hay alguna manera de evitar que durante la reproducción de estas transiciones de uso intensivo del sistema?

¿Fue útil?

Solución

sacudidas en la reproducción de FLV / F4V no es el resultado de la recolección de basura - el video es en realidad mantiene en memoria hasta que esté totalmente descargada, así que no hay recolección de basura que tiene lugar en absoluto (a menos que haya algo que se hace poco ortodoxo como colocar el video en un recipiente con cacheAsBitmap conjunto en true).

El cambio a F4Vs si no necesita características específicas FLV (como el enlace publicado por daidai sugiere - descargo de responsabilidad, es mi blog) ayudaría, pero en general, también hay que estar al tanto de todo lo que está impactando de composición de la imagen en pantalla. Debido a que un tamaño grande de las fuerzas de vídeo todo lo que se superponen que sea re-renderizados, cualquier objeto pequeño puede tener un gran impacto en el rendimiento.

¿Tiene cosas en la parte superior del video? Trate de conseguir deshacerse de ellos, si es posible, o la creación de cacheAsBitmap en true (si no están animados). Esto es especialmente bueno para dibujos vectoriales complejos o texto (mapas de bits / imágenes son mucho más rápidos para dibujar). Si tienen diferentes modos de fusión, estás tipo de atornillado - se puede utilizar el modo de fusión normal en lugar

?

¿Tiene algo debajo del video? Si es así, deshacerse de ellos mientras se reproduce el video (solo conjunto visibilidad a falso).

Para comprobar visualizaciones innecesarias, de algún modo pausa en el vídeo, haga clic, activar el 'regiones vuelto a trazar show' (jugador de depuración). ¿Usted ve el cuadrado rojo dibujo de forma continua? Entonces hay algo sucediendo allí en el fondo, mejor deshacerse de él.

¿Tiene todo lo que ocurre en el fondo a través de onEnterFrame o temporizadores / intervalos? Tratar de detenerla.

Es su 30fps de vídeo, y una representación del CG (por ejemplo, puede utilizar el desenfoque de movimiento)? Si es así, trate de renderizado a 24fps en vez, o algo entre -. De buena calidad todavía, pero mucho menos datos para decodificar y extraer

¿Se puede utilizar vídeos más pequeños? Incluso si usted todavía está rindiendo al mismo tamaño más grande, menos datos de píxeles decodifique y represente ayuda enormemente, y el impacto en la calidad puede ser bastante pequeña.

Eso resume todo. Deshacerse de todo lo demás en la pantalla suele ser su prioridad # 1 sin embargo.

Otros consejos

¿Usted ha intentado codificar los vídeos en H.264 en su lugar? Flash Player es compatible con ellos durante algún tiempo, puede terminar trabajando mejor. Eso es lo que la mayoría de la gente que hace de vídeo de alta definición en el uso del flash (por ejemplo, Youtube, Vimeo, etc).

Al igual que una prueba, intente plaing un video de alta definición 1080p en youtube y ver si se hace una pausa en absoluto para ti.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top