Estoy haciendo un reproductor de vídeo con AS3 y resulta que los vídeos que quiero cargar se accede desde una ruta que redirecciona a la real yo pongo dominio.es/V/23 y este internamente me dice que el video esta en otra ruta dominio.es/videos/video4.mp4.
Si está ruta la pongo hardcodeada directamente en el programa de adobe flash funciona perfectamente, el problema viene cuando intento pasarle esa ruta por flashvars desde un HTML y entonces no funciona esa redirección.
Espero haberme explicado con claridad.
Mi pregunta es como puedo hacer para que pasando la ruta usando las flashvars siga reproducciendose el vídeo.
He aquí mi código.
Código ActionScript :
//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; //Parametros que recibimos de HTML var $__paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; //Datos para el video. var $__UrlVideo:String = String($__paramObj["video"]); //Url del video var $__nc:NetConnection; //Conexion con servidor. var $__ns:NetStream; //Empieza el Streaming. var $__video:Video; //Objeto video. var $__AutoPlay:String = String($__paramObj["autoplay"]); //Obtenemos el Play. var $__Loop:String; var $__Poster:String= String($__paramObj["poster"]); //Ruta del poster. var $__InsertPoster:URLRequest; //Objeto para la petición del poster. var $__CargadorPoster:Loader; //Cargador del poster. var $__Sonido:SoundTransform; var $__timer:Timer; //Metadatos del video. var $__anchoV:Number; var $__altoV:Number; var altoBarra:Number = BarraNav.height; //Metodo constructor pinta el video y crea la conexión. stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; //Función inicializadora. $__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); $__ns.client = this; $__ns.addEventListener(NetStatusEvent.NET_STATUS, this.estadoReproduccion); $__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); stage.addChild($__video); if($__AutoPlay != "TRUE") { $__CargadorPoster = new Loader(); $__InsertPoster = new URLRequest(this.$__Poster); $__CargadorPoster.load($__InsertPoster); stage.addChild($__CargadorPoster); } if($__AutoPlay == "TRUE"){ $__ns.play($__UrlVideo); }else{ $__ns.play($__UrlVideo); $__ns.pause(); } ObjectIndex(); //Metodos para ingnorar errores. function NoError(event:AsyncErrorEvent):void{ //ignora errores. } //metodo de posicion del elemento. function ObjectIndex():void{ removeChild(Btn_fullscreen); removeChild(Btn_play); removeChild(Btn_pause); removeChild(Btn_SoundOn); removeChild(Btn_SoundOff); removeChild(BarraNav); stage.addChild(BarraNav); stage.addChild(Btn_fullscreen); stage.addChild(Btn_play); stage.addChild(Btn_pause); stage.addChild(Btn_SoundOn); stage.addChild(Btn_SoundOff); } //Metodos internos. function estadoReproduccion(event:NetStatusEvent):void{ //Obtenemos el estado de video. switch(event.info.code){ case "NetStream.Play.Start": this.ratonAction(); break; case "NetStream.Play.Stop": this.opacity(); break; } } function onMetaData(info:Object){ stage.addEventListener(Event.RESIZE,DimensionesRepro); function DimensionesRepro(event:Event=null):void{ var ancho:Number = stage.stageWidth; var alto:Number = info.height*(((ancho*100)/info.width)/100); $__video.width = ancho; $__video.height = alto; $__video.y = (stage.stageHeight - alto) / 2; BarraNav.width = ancho; BarraNav.y = stage.stageHeight - BarraNav.height; Btn_pause.x = 0; Btn_pause.y = stage.stageHeight - Btn_pause.height; Btn_play.x = 0; Btn_play.y = stage.stageHeight - Btn_play.height; Btn_SoundOn.x = stage.stageWidth - (Btn_SoundOn.width + Btn_fullscreen.width); Btn_SoundOn.y = stage.stageHeight - Btn_SoundOn.height; Btn_SoundOff.x = stage.stageWidth - (Btn_SoundOn.width + Btn_fullscreen.width); Btn_SoundOff.y = stage.stageHeight - Btn_SoundOff.height; Btn_fullscreen.x = stage.stageWidth - Btn_fullscreen.width; Btn_fullscreen.y = stage.stageHeight - Btn_fullscreen.height; } DimensionesRepro(); } //Metodos con funcionalidades. function silenciar(event:MouseEvent):void{ //Eliminamos el sonido del video por completo. $__Sonido = new SoundTransform(0.0); $__ns.soundTransform = $__Sonido; } function sonido(event:MouseEvent):void{ $__Sonido = new SoundTransform(1.0); //SoundTransform el primero numero es el volumen y el segundo el canal -1 izquierdo 1 derecho. $__ns.soundTransform = $__Sonido; } //Control de reproduccion del video. function Play(event:MouseEvent):void{ $__ns.resume(); } function Pause(event:MouseEvent):void{ $__ns.pause(); } function opacity():void{ Btn_fullscreen.height = this.altoBarra; Btn_play.height = this.altoBarra; Btn_pause.height = this.altoBarra; Btn_SoundOn.height = this.altoBarra; Btn_SoundOff.height = this.altoBarra; BarraNav.height = this.altoBarra; } function ratonAction(){ var inactivo; var t:Number = 3000; stage.addEventListener(MouseEvent.MOUSE_MOVE,ratonMovido); inactivo = setTimeout(ratonParado,t); function ratonMovido(e:MouseEvent):void{ clearTimeout(inactivo); inactivo = setTimeout(ratonParado,t) opacity(); } function ratonParado():void{ Btn_fullscreen.height = 0; Btn_play.height = 0; Btn_pause.height = 0; Btn_SoundOn.height = 0; Btn_SoundOff.height = 0; BarraNav.height = 0; } }
y aqui el tramo hardcodeado en el propio programa.
Código ActionScript :
/Datos para el video. var $__UrlVideo:String = "http://www.viwomail.es/videoemail/C/28/video/envio"; //Url del video var $__nc:NetConnection; //Conexion con servidor. var $__ns:NetStream; //Empieza el Streaming. var $__video:Video; //Objeto video. var $__AutoPlay:String = "TRUE"; //Obtenemos el Play. var $__Loop:String; var $__Poster:String ='http://www.viwomail.es/video/front/viwomail/video_viwomail/poster_viwomail.jpg'; //Ruta del poster. var $__InsertPoster:URLRequest; //Objeto para la petición del poster. var $__CargadorPoster:Loader; //Cargador del poster. var $__Sonido:SoundTransform; var $__timer:Timer;
Gracias ante todo.