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.
