Explico mi problema.
Estoy intentando crear un reproductor de vídeo completo, el vídeo lo cargo a través del NetStream y funciona bien.
El problema viene en que quiero sacar los metadatos de duración, y tamaño (ancho y alto) y no consigo pasarlos a ningún sitio de modo que yo luego pueda usarlos para hacer operaciones.
Mi código es el siguiente.
Código ActionScript :
package { //Importamos las clases necesarias. import flash.display.*; import flash.media.*; import flash.net.*; import flash.utils.*; import flash.events.*; import flash.display.*; import flash.media.Sound; //import CustomClient; public class reproductorVideo extends Sprite{ //Datos para el video. private var UrlVideo:String; //Url del video private var nc:NetConnection; //Conexion con servidor. private var ns:NetStream; //Empieza el Streaming. private var video:Video; //Objeto video. private var AutoPlay:String; //Obtenemos el Play. private var Poster:String; //Ruta del poster. private var InsertPoster:URLRequest; //Objeto para la petición del poster. private var CargadorPoster:Loader; //Cargador del poster. //Dimensiones del reproductor private var ancho:int; //Ancho del reproductor completo private var alto:int; //Alto del reproductor completo //Metadatos del video. private var Vtmp:CustomClient; //Metodo constructor pinta el video y crea la conexión. public function reproductorVideo() { nc = new NetConnection(); //Generamos la conexión nc.connect(null); //Le decimos que el video esta alojado en un servidor externo que no es Flash Media Server. ns = new NetStream(nc); Vtmp = new CustomClient(); ns.client = Vtmp; ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,NoError); //Añadimos un evento para que ignore errores de syncronismo. video = new Video(); //Creamos el objeto video. video.attachNetStream(ns); //Le asignamos el video en stream al objeto video. } //Metodos para ingnorar errores. public function NoError(event:AsyncErrorEvent):void{ //ignora errores. } //Metodos de obtención de datos. public function SetVideoDatas(video:String,Play:String,poster:String):void{ //Definimos las opciones de autoplay ruta del video y la del poster. this.UrlVideo = video; if(Play != ""){ this.AutoPlay = Play; }else{ this.AutoPlay = "False"; } if(poster != ""){ this.Poster = poster; }else{ this.Poster = "False"; } } //Metodos devolución de datos. public function InsertVideo(){ //retornamos la variable video. return video; } //Metodos internos. private function metaDatos(){ //return Custom = new CustomClient(); } //Metodos de diseño. public function InserPoster(){ //Insertamos el poster apartir de la URL definida. if(Poster != "False"){ CargadorPoster = new Loader(); InsertPoster = new URLRequest(Poster); CargadorPoster.load(InsertPoster); } } public function SetDimensionesReproductor(anc:int,alt:int):void{ //Definimos el ancho y alto del reproductor completo. this.ancho = anc; this.alto = alt; } //Metodos con funcionalidades. public function silenciar(event:MouseEvent){ //Eliminamos el sonido del video por completo. var Sonido:SoundTransform = new SoundTransform(0.0); ns.soundTransform = Sonido; } public function sonido(event:MouseEvent){ var Sonido:SoundTransform = new SoundTransform(1.0); //SoundTransform el primero numero es el volumen y el segundo el canal -1 izquierdo 1 derecho. ns.soundTransform = Sonido; } public function Play(event:MouseEvent){ ns.resume(); } public function Pause(event:MouseEvent){ ns.pause(); } //Control de reproduccion del video. public function Playing(){ if(AutoPlay == "true"){ ns.play(UrlVideo); }else{ ns.play(UrlVideo); ns.pause(); } } } } class CustomClient{ public var duration:Number; public function onMetaData(info:Object):void{ this.duration = info.duration; trace("MetaDatos: Duracion = " + info.duration + " Ancho = " + info.width + " Alto = " +info.height); } }
He tomado como referencia el tutorial que tenéis de como crear una barra de progreso puesto que sacan el dato de la duración.
Gracias a todos los que puedan ayudarme y si no es mucha molestia la persona que me responda podría explicar como lo haría el de forma un poco detallada para que yo consiga comprenderlo.
Muchas gracias y muy buen foro.