audio video streamer en flashcom
Bueno, esta tarde me puse a hacer un audiovideostreamer en flashcom. Faltan de pulir cosas, como obtener la longitud del stream y alguna cosilla, pero bueno, ahí van unos códigos
//Creamos la conexión al servidor.
nc=new NetConnection();
/*
Función: onStatusTemplate
Desc: Función onStatus para netConnection y netStream
params: info -> objeto que trae la información desde el servidor
Nota: Esta función (onStatusTemplate) está basada en la plantilla realizada por Kevin Towes para su libro "Macromedia Flash Communication Server MX" ( pangaea newmedia inc ) página 449, apéndice E
*/
function onStatusTemplate(info){
info_array=info.code.split(".");
trace("·······················Comienzo de mensaje");
trace(new Date());
trace("Mensaje recibido para el objeto: "+info_array[0]);
trace("LEVEL: "+info.level);
trace("CODE: "+info.code);
/*Aquí el resto de la plantilla, no la pongo entera que es muy larga pues contempla todos los casos de NetConnection y NetStream
*/
}
//Asignación de la plantilla.
NetConnection.prototype.onStatus=onStatusTemplate;
NetStream.prototype.onStatus=onStatusTemplate;
//Conexión al servidor ( por debajo de onStatus para que no escape ninguno )
nc.connect("rtmp:/videolistado/videomusic");
/*
Función: audioVideoStreamer
Desc: Crea objetos de la clase audioVideoStreamer, permitiendo la reproducción de audio y video. La asignamos como _global para ser accedida desde cualquier nivel/anidamiento fácilmente
Params:
streamName -> El nombre del stream
videoObjectName -> El nombre del objeto video
netConnectionName -> El nombre de la conexión que utilizamos
soundmcName -> El nombre de un mc que usaremos para controlar el volumen
bufferTimeC -> El buffer que establecemos
*/
_global.audioVideoStreamer=function(streamName, videoObjectName, netConnectionName, soundmcName, bufferTimeC){
//Asignación
this.my_ns=streamName;
this.my_video=videoObjectName;
this.my_nc=netConnectionName;
this.my_sound_mc=soundmcName;
this.my_buffer=bufferTimeC;
//Creación
this.my_ns=new NetStream(this.my_nc);
this.my_video.attachVideo(this.my_ns);
this.my_ns.setBufferTime(this.my_buffer);
this.my_sound_mc.attachAudio(this.my_ns);
this.soundControl=new Sound(this.my_sound_mc);
this.soundControl.setVolume(50);
}//audioVideostreamer
/*
Función: doPlay
Desc: Comienza a reproducir el stream indicado. Se desdobla en dos partes ya que la ejecución es distinta si se trata de un stream de audio ( mp3 )de uno de video ( flv )
Params:
selectedStream -> El stream seleccionado para su reprodución
selectedType -> Tiene dos posibles valores, "flv" o "mp3", nos indica el
tipo de archivo que queremos reproducir
*/
audioVideoStreamer.prototype.doPlay=function(selectedStream,selectedType){
if(selectedType=="flv"){
this.my_ns.play(selectedStream);
}//flv
else if(selectedType=="mp3"){
this.my_ns.play("mp3:"+selectedStream);
}//mp3
};//doPlay
/*
Función: doRewing
Desc: Rebobina el stream una cantidad indicada de segundos, en este caso está preparado para que sea 10 segundos, pero se puede cambiar para recibir esta cantidad como parámetro
Params: no tiene
*/
audioVideoStreamer.prototype.doRewing=function(){
this.my_ns.seek(this.my_ns.time-10);
};//doRewing
/*
Función: doForward
Desc: Avanza el stream una cantidad indicada de segundos, en este caso está preparado para que sea 10 segundos, pero se puede cambiar para recibir esta cantidad como parámetro
Params: no tiene
*/
audioVideoStreamer.prototype.doForward=function(){
this.my_ns.seek(this.my_ns.time+10);
};//doForward
/*
Función: doPause
Desc: Pausa la reproducción del stream. Para que el stream vuelva a reproducirse, deberá ejecutarse esta función de nuevo
Params: no tiene
*/
audioVideoStreamer.prototype.doPause=function(){
this.my_ns.pause();
};//doPause
/*
Función: doDisconnect
Desc: Termina la reproducción del stream y lo libera. No cierra la conexión
Params: no tiene
*/
audioVideoStreamer.prototype.doDisconnect=function(){
this.my_ns.play(false);
this.my_ns.clear();
};//doDisconnect
//////////////////////////USO
this.createEmptyMovieclip("mi_mc", 1);
reproductor=new audioVideoStreamer(el_stream, my_video, nc, mi_mc, 2);
video1={label:"Macromedia", data:"video macromedia", typeF:"flv"};
musica1={label:"Bob & Marcia", data:"young gifted and black", typeF:"mp3"};
mis_Streams=[video1, musica1];
my_lb.setDataProvider(mis_Streams);
my_lb.setChangeHandler("elegir", this);
elegir=function(c){
selectedStream=c.getSelectedItem().data;
selectedType=c.getSelectedItem().typeF;
_root.reproductor.doPlay(selectedStream, selectedType);
};
stop_btn.onRelease=function(){
reproductor.doDisconnect();
};
pause_btn.onRelease=function(){
reproductor.doPause();
};
rewing_btn.onRelease=function(){
reproductor.doRewing();
};
forward_btn.onRelease=function(){
reproductor.doForward();
};
Cuando esté terminado, lo pongo para descargar ( los archivos fla o as y el main.asc). Pero de momento para los no iniciados en flashcom les puede servir como punto de partida para ver qué fácil es hacer un reproductor de audio y video.
Ah claro, en pantalla tengo un objeto video de nombre: my_video, un componente listbox de nombre: my_lb y una serie de botones: stop_btn, pause_btn, rewing_btn, forward_btn
Continuará...