Comunidad de diseño web y desarrollo en internet online

problema con NetStream (barra de precarga) y delegate

Citar            
MensajeEscrito el 27 May 2010 04:45 pm
hola a todos,
Estoy desarrollando una web que contiene una galeria de videos (los eventos están construidos con Delegate) que muestran los diferentes trabajos de una empresa.
El visor de vídeo está basado en NetStream.
Cuando pulso en un thumbnail de la galería de videos, me reproduce sin problemas el video... Pero lo que no hace es hacerme la precarga, sino que para que se reproduzca el vídeo hay que esperar a que se cargue completamente, cosa que no es válida.
Lo curioso es que si lanzo el stream.play(ruta_video) desde donde tengo la programación, si funciona la barra... pero si lo hago desde cualquier thumbnail de la galería de trabajos, funciona todo menos la barra de carga.
Se me ocurre que puede ser que deba pasar la variable stream como propiedad de Delegate, pero no estoy seguro si es eso.
Aquí pongo mi codigo para que podais decirme que ocurre. Parece algo largo, pero en realidad no tiene mucho...
Muchas, muchas gracias.
mig

Código ActionScript :

   
_global.creada = "no";
var videoTam:Object = new Object();
_global.cambio = true;  /// controla si es pantalla completa o no
var  pausePlay:Boolean = true;   /// Controla si el video esta pausado o en play
var pathT:Rutas =  new Rutas (); /// inicializa la clase Rutas;  ////////////////  RUTA PARA LA INFO DE CADA TRABAJO. aqui estan las RUTAS necesarias.
var timeline:MovieClip =pathT.rutaContVideoTrab ;   //// ruta en la que voy a vincular el contenedor del video   
var nDownload:Number;  ///  crea un set interval que controle la gestión de la barra de descarga progresiva
var nPlayback:Number;  /// crearun set interval que controle la posicion del slider en el movimiento del video
   
// ---------------- NetConnection and NetStream Objects --------------//
   /// crea la instancia del movie clip donde se muestra el video
   if (creada == "no") { // comprueba si ya tenemos instancia o no
      _global.video_container = timeline.attachMovie ('video_container', 'video_container', timeline.getNextHighestDepth ());      
      creada = "si";   
      var connection_nc:NetConnection = new NetConnection ();
      connection_nc.connect (null);
      var stream:NetStream = new NetStream (connection_nc);
      stream.setBufferTime(5);
      video_container.mivideo.my_video.attachVideo (stream);
      video_container.mivideo.my_video.smoothing = true;
      
      //////////// posicionamos la instancia en el escenario en su posición inicial
      video_container._x = 10;
      video_container._y = 117;
      
      ////// cambiar el tamaño del video dependiendo de la variable _tipodemedia
      _global._minW = 700; // es el tamaño del vídeo MAXIMO
      _global._minH = 390;
      video_container.mivideo.my_video._height = _minH;
      video_container.mivideo.my_video._width = _minW;
   }
   
   //-----------------------------------onStatus Event Handlers -------------------//
   stream.onStatus = function(obj:Object):Void  {
   trace(obj.code);
   if (obj.code == "NetStream.Play.Start") {

   }
   if (obj.code == "NetStream.Play.Stop") {   
      clearInterval(nPlayback);
      video_container.mcBuffer._visible = false;
   }
   if (obj.code == "NetStream.Play.StreamNotFound") {
      trace("movie cannot be found");
   }
   if (obj.code == "NetStream.Buffer.Full") {
      video_container.mcBuffer._visible = false;
   }
   //if (obj.code == "NetStream.Buffer.Empty" && !movieEnded) {  
   if (obj.code == "NetStream.Buffer.Empty") {
      trace("buffer empty");
      video_container.mcBuffer._visible = true;
   }
};
   
   stream["onMetaData"] = function(obj:Object):Void {
      duration = obj.duration;
   }
   
   
//----------------------------------------PLAYBACk PROGRESS ----------------------------------//
var percentPlayed:Number;
function playback():Void {
   percentPlayed = stream.time/duration*(620 - video_container.barra_vid.seek_slider._width);
    video_container.barra_vid.seek_slider._x = percentPlayed;
   }

//-----------------------------   Download Progress --------------------//

   var nBytesLoaded:Number;
   var nBytesTotal:Number;
   var percentageLoaded:Number;
   
   function downloadProgress(_stream:NetStream):Void {
      nBytesLoaded = _stream.bytesLoaded;
      nBytesTotal = _stream.bytesTotal;
      trace ("DOWNLOAD PROGRESS")
      
      percentageLoaded = nBytesLoaded/nBytesTotal*100;
      _root.xx.text = percentageLoaded;
      video_container.barra_vid.seek_slider._xscale = percentageLoaded;
      if (percentageLoaded == 100) {
         clearInterval(nDownload);
      }
   }

   //-----------------------------clear intervals ---------------------//
function clearIntervals():Void {
   clearInterval(nDownload);
   clearInterval(nPlayback);
}


////-----------------------BARRA DE DESPLAZAMIENTO  ---------------------------------////

    video_container.barra_vid.seek_slider.onPress = function():Void  {
      clearInterval(nPlayback);
      this.startDrag(true, 0, this._y, (620 - video_container.barra_vid.seek_slider._width), this._y);
      this.onEnterFrame = function():Void  {
         stream.seek(this._x*duration/620);
      };
   };

   video_container.barra_vid.seek_slider.onRelease = function():Void  {
      this.stopDrag();
      delete this.onEnterFrame;
      nPlayback = setInterval(playback, 1000/24);
   };

   video_container.barra_vid.seek_slider.onReleaseOutside = video_container.barra_vid.seek_slider.onRelease;
   
   
//////   lanzarVideo ("PIA.flv", stream);
/* ----------------- acciones para el video ------------------------- */

///////// funcion par LANZXAR EL VIDEO CORRESPONDIENTE

 function lanzarVideo (ruta_video:String, _stream:NetStream):Void {
   video_container._visible = true;
   var ruta_video = "img/gr/"+ruta_video;   // seleccionamos el video que se va a visionar
   _stream.play (ruta_video);
   clearIntervals();
         nDownload = setInterval(downloadProgress, 1000/24,_stream);
   nPlayback = setInterval(playback, 1000/24);

}

// elimina el vídeo si lo hay
quitarVideo = function ():Void {
   if (stream != undefined) {
       stream.close();
       clearIntervals();
                 creada = "no";  // switch para crear instancia de vídeo
       video_container._visible = false;
   }   
}

   /// esta función la uso cuando sube y baja la galeria
   pausarVideo = function (valor:Boolean):Void {
      if (stream != undefined) {
         stream.pause(not valor); /// pausamos el video
         video_container._visible = valor;
         trace ("pausar  conexion");
      }
   }

Por mig

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2010 01:38 am
No puedes pasar el argumento por setInterval a menos que sea autocontenido, usas stream pero para el play usas _stream, que no veo donde declaras .... en cualquier caso crea una variable stream y usala en el setInterval ... no veo ningún Delegate, que igual aquí no sería de mucha utilidad porque es código en línea de tiempo, no una clase

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 May 2010 12:48 pm
Muchas gracias por responder Jorge...
Te cuento.
Uso _stream porque me he llevado como parámetro la variable stream (y al pasarla como parámetro en lanzarVideo la he llamado _stream) function lanzarVideo (ruta_video:String, _stream:NetStream):Void {

no había posteado la declaración del Delegate. El código del NetStream si está en linea de tiempo pero los thumbnails de mi galeria de vídeo están creados dinámicamente con clases y un Delegate para controlar los eventos de ratón.

No entiendo bien lo que me dices que haga con el setInterval... no le he pasado bien el parámetro ¿? (independientemente de que le pase _stream o stream)...

Y por último, creo que he conseguido que funcione en todos los navegadores excepto en Firefox... que no hace el setBuffering... Alguna idea?

de nuevo, muchísimas gracias

Por mig

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2010 01:11 pm
¿Ya te funciona? Genial
En cuanto a navegadores me extraña, si me dices IE pero no en el resto o al revés tiene sentido, pero en FF y no en el resto ... ¿se puede ver en alguna URL?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 May 2010 02:22 pm
si, puedes verlo aquí...
es el alojamiento del cliente...

http://www.pasoslargos.es/website2/
(no te fijes en el recuadro del buffering, estoy "en construcción")

De hecho he leido en algún post que puede ser cuestión del js con el que se embebe.... o bien que también puede ser del alojamiento (lo estoy subiendo también a mi sitio para probarlo.)

los vídeos hacen algo raro, ya que al pasar de un thumb a otro, se queda un fotográma del video...

muchas gracias de nuevo

Por mig

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2010 02:40 pm
se me olvidó indicarte que solo tienen datos correctos los tres primeros thumbs...
el tercero tiene video y foto... creo que funciona bien...

mil gracias,

Por mig

16 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.