Comunidad de diseño web y desarrollo en internet online

Streaming y precarga de flv en Flash

Citar            
MensajeEscrito el 02 Ago 2010 07:15 am
Buenos días,

Estoy intentando hacer un streaming y precarga para un vídeo en f4v. Leyendo los tutoriales sobre el tema esto es lo que he conseguido hacer, pero no funciona...

Os paso el código que tengo escrito en el fotograma 1. A ver si me podéis echar una mano:

Código ActionScript :

stop ();
//Video con streaming
var nc:NetConnection = new NetConnection();
nc.connect(null);

var ns:NetStream = new NetStream(nc); 
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
ns.play("Alborada_tierra_13.f4v"); 
ns.client = this;
var buffer:Number = 10;
ns.bufferTime = buffer;
function asyncErrorHandler(event:AsyncErrorEvent):void 
{ 
    // ignore error 
}

var vid:Video = new Video(); 
vid.attachNetStream(ns); 
addChild(vid);


vid.width = 987;
vid.height = 594;

/*function onMetaData(infoObject:Object):void {
   trace("metadata");
}
function onCuePoint(infoObject:Object):void {
   trace("cue point");
}*/

//Precarga
//creo una caja de texto dinamico
var campo:TextField=new TextField();
campo.text="Campo de Texto";
addChild(campo);
//
this.addEventListener(Event.ENTER_FRAME, preload);
function preload(e:Event):void {
   //obtengo el porcentaje
   var valor1:Number = Math.round(ns.bytesLoaded/ns.bytesTotal*100);
   //inserto la informacion el la caja de texto
   campo.text = Math.round(ns.bytesLoaded/1000)+" de "+Math.round(ns.bytesTotal/1000)+" KB cargado ("+valor1+"%)";
   //basandome en el porcentaje modifico la barra
   barra.scaleX = valor1;
   //si completa el porcentaje mayor a 100
   //elimino el onEnterframe
   //porque ya cargo el FLV
   if (valor1>=100) {
      //delete this.addEventListener(Event.ENTER_FRAME, preload);
      gotoAndPlay (2);
   }
}

Por smarties

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 02 Ago 2010 02:09 pm
Que quiere decir no funciona? Que error te da? Que muestra la caja de texto?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Ago 2010 05:40 pm
Decía que no me funcionaba porque no me daba ningún error, pero el vídeo se descargaba igual de despacio que si no hubiera puesto ese código.

Ahora, no sé por qué razón, ya me funciona. Es decir, al darle a Probar en el menú de flash, el vídeo se reproduce rapidamente.

Tengo otra pregunta, a ver si me podéis ayudar... El vídeo lo he importado desde la biblioteca, selecciono nuevo vídeo y arrastro el objeto vídeo al escenario. El caso es que en otra capa tengo un botón de sonido, que quiero se vea por encima del vídeo. Sé que hay alguna propiedad en actionScript 3 para colocar los objetos en el escenario en diferentes capas (o profundidades, no sé cuál es el término correcto). Sabéis qué propiedad se utiliza en as3 y cuál es la forma correcta de utilizarla?

Gracias.

Por smarties

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 04 Ago 2010 05:47 pm
Un preload no hace que se reproduzca rapidamente, simplemente da un feedback de cuanto va cargando, las siguientes veces que lo ves ya viene del cache, por eso se reproduce rápido, pero cualquiera que ingrese en tu web deberá descargarlo previamente, por eso es importante que la barra de preload funcione.
Si tienes un botón en el escenario, simplemente pon la capa mas arriba, si lo quieres hacer por código, mírate el método DisplayObjectContainer.setChildIndex en la ayuda

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Ago 2010 05:59 pm
Vuelvo atrás. He abierto de nuevo el flash y no me funciona.

Con lo de que se reproduce rápido me refiero al streaming, no al preload. No sé si estoy confundiéndome en los conceptos. En un artículo de cristalab decía: "La ventaja de utilizar streaming, es que nos permite escuchar y visualizar los archivos de audio y/o video mientras se van descargando en nuestros ordenadores, evitando así, la larga espera de tener nuestro archivo completo". No es esto lo que estoy haciendo en las primeras líneas de mi código???

Por otra parte, el preload no me funciona. Cuando le doy a Simular Descarga me aparece una pantalla en blanco (por ningún sitio el preload), cuando se carga aparece el vídeo. Qué error puede haber en el código???

Gracias.

Por smarties

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 04 Ago 2010 06:07 pm
A menos que estes usando un servidor de streaming, estas haciendo descarga progresiva que no es lo mismo. El comportamiento por defecto es empezar a reproducir ni bien se llena el buffer (creo que son unos 2 segundos por defecto), luego dependiendo de la velocidad de conexión irá a los saltos o no. Para probar esto el preview no te sirve, lo tienes que subir a un servidor y probar desde allí

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Ago 2010 06:47 pm
Muchas gracias. Voy a probarlo.

Por smarties

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 05 Ago 2010 08:26 am
Lo he probado y funciona correctamente. Lo que pasa es que tengo un par de preguntas más:

1.- ¿Y si quiero que el preload llegue a completarse antes de que el vídeo comience a reproducirse?

2.- Por otra parte, quiero que el vídeo se comporte en forma de bucle. Tengo escrito el siguiente código:

import fl.video.VideoEvent;
vid.autoRewind=true;
function rebobinar(event:VideoEvent):void {
vid.play();
}
vid.addEventListener(VideoEvent.COMPLETE, rebobinar);

Me da el siguiente error: "1046: No se encontró el tipo o no es una constante en tiempo de compilación: VideoEvent.

Por smarties

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 05 Ago 2010 11:28 am
1. Le das Play y Pause, eso inicia la descarga, cuando termina le vuelves a dar a Play y te aseguras que lo tienes entero
2. Hay varios POSTS al respecto, básicamente lo que haces es:

Código ActionScript :

import flash.events.NetStatusEvent

ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
 
function netStatusHandler(event:NetStatusEvent):void {
   switch (event.info.code) {
      case "NetStream.Play.StreamNotFound":
         trace("Stream not found: " + strSource);
      break;
      case "NetStream.Play.Stop":
         rebobinar();
      break;
   }
}
function rebobinar(){
   ns.seek(0);
   ns.play();
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Oct 2010 08:53 pm
Tengo una clase que carga mp4, pero cuando lo subo al servidor se ve a saltos.

En que metodo tendría que colocar el argumento para setear esta opción, o es por defecto?

Código ActionScript :

         //abro la conexión
         var netConnection:NetConnection = new NetConnection();
         netConnection.connect(null);
         
         _netStream = new NetStream(netConnection);
         _netStream.addEventListener(NetStatusEvent.NET_STATUS, estado);
         _netStream.play("videos/" + _nombre);
         
         _netStream.bufferTime = 10;
         
         var netClient:Object = new Object();
         
         netClient.onMetaData = function(meta:Object)
         {
            //Propiedades basicas
            trace("meta.videoframerate", meta.videoframerate);
            trace("meta.width", meta.width);
            trace("meta.height", meta.height);
            trace("meta.duration", meta.duration);
         };
         
         //Asignamos la funcion que va a recibir la notificacion 
         _netStream.client = netClient;

         //Creamos una variable del tipo Video para adjuntar nuestro _netStream
         var video = new Video();
         video.attachNetStream(_netStream);
         
         //Agregamos el video al escenario
         addChild(video);   


Gracias de antemano

Por apoloux

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Oct 2010 02:13 am
No veo que hagas precarga, solo tienes un bufferTime, ¿a que opción te refieres?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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