Hola David.
Recientemente me he adentrado en este tema para poner algo en mi página web(www.pitger.net). He hecho un reproductor con carga de varios mp3 y bueno, no realiza streaming. Entiendo que el streaming es una precarga del buffer que evita los cortes en la reproducción. También hay que tener en cuenta el ancho de banda que tenga el usuario para cargar archivos.
Una primera noción de streaming que se me ocurrio fué que un archivo mp3, digamos "audio1" empezase a reproducirse solo cuando estuviese cargado al 20% del total y no antes. Evidentemente esto no es exactamente streaming porque alguien puede tener un ancho de banda que necesite que se cargue al menos el 50% de la pista para que luego se reproduzca sin interrupciones.
En principio, lo que primero haríamos sería cargar una pista de nuestro web, yo lo hago así:
Código :
if(noRepeat==undefined){
var noRepeat:Number;
noRepeat=1;
var sonic_bg = new Sound();
sonic_bg.loadSound("audio1.mp3",true);
sonic_bg.onSoundComplete=function(){
this.start();
}
}
sonic_bg.start();
Bien, teniendo ese audio1.mp3 debería empezar a reproducirse al cargar el swf, pero sin retardo, es decir, cuando el flash lee este código empieza a cargar el mp3 a la vez que lo reproduce.
Ahora bien, vamos a modificar un poco esto para que realice algo parecido al streaming. Lo primero será pues quitarle al código puesto arriba el "sonic_bg.start()" que sale al final, para que no empiece la reproducción sin más.
Ahora creo un MC vacío, que le llamo "cargador", que hará la funcion de comprobar cuanto % hay cargado y llegado al % deseado, que empiece la reproducción. En las acciones de este MC pongo lo siguiente:
Código :
onClipEvent(load){
//defino el porcenaje de streaming que quiero...
streaming=(_root.sonic_bg.getBytesTotal()*20)/100;
}
onClipEvent(enterFrame){
BytesCargados=_root.sonic_bg.getBytesLoaded();
BytesTotales=_root.sonic_bg.getBytesTotal();
//Veo cual es el porcentaje cargado
porcentaje=((BytesCargados/BytesTotales)*100);
//ahora, si lo cargado es igual que el straming...
if(_root.sonic_bg.getBytesLoaded()<streaming){
//inicio la reproducción
_root.sonic_bg.start();
}
}
Esto sería en síntesis una especie de streaming, no digo que lo sea, pero al precargar un 20% de la pista hará que el reproductor tenga unos "segundos" de la pista ya cargados y que puede reproducir mientras acaba de cargar el resto.
No lo he llegado a probar del todo osea que ya me contarás si te ha ido bien.