AS3: Detener descarga del componente FLVPlayback
Septiembre 4th, 2009Por alguna razón, Adobe no implementó un método para detener la descarga de un archivo FLV cuando queremos eliminar un componente FLVPlayback. Puedes crear un reproductor FLV dinámicamente y luego destruirlo, pero si ha comenzado la reproducción el fichero FLV continuará descargándose hasta que termine.
La clase FLVPlayback implementa el método closeVideoPlayer( índice ) que permite detener la descarga del archivo FLV que esté descargando, pero está limitado a cuando abres múltiples vídeos en un solo componente. La limitación consiste en no dejarte eliminar el la conexión de video con la que creaste el reproductor.
// Creamos el reproductor y lo ponemos a reproducir
var video:FlvPlayback = new FlvPlayback();
video.play( "video.flv" );
// Ahora intentamos cerrar el reproductor
video.stop();
video.closeVideoPlayer(0); // Debería detener la descarga, pero nos lanza un error
video = null; // Para que el Garbage Collector lo elimine de memoria
Si en el ejemplo omitimos video.closeVideoPlayer(0), el reproductor se elimina, pero el vídeo continúa descargándose y consumiendo ancho de banda.
Esto puede ser un problema cuando haces uso de varias instancias de este componente, y debido a las circunstancias no puedes usar uno solo. Cada una de ellas llamará a la descarga de un FLV, y puede darse el caso de estar descargando varios FLV a la vez, con el consiguiente consumo de ancho de banda.
La solución, acceder a la primera instancia VideoPlayer y detenerlo uno mismo:
// Ahora intentamos cerrar el reproductor
video.stop();
video.getVideoPlayer(0).close(); // Ahora sí, detiene la descarga del archivo FLV
video = null; // Para que el Garbage Collector lo elimine de memoria
Algo muy sencillo, pero que ya me ha hecho perder algo de tiempo buscándolo
. Aquí lo dejo como apunte.