« A little game in Flashcom | Inicio | Get the stats of your apps in flashcom »

AudioVideoStreamer with Flashcom. First Approach

yesterday i was playing with flashcom, and i decided to do an simple audiovideostreamer. Here are the codes. As you see is a really simple example, but it can show how easy is to work and have results with flash communication server

//net connection nc=new NetConnection(); /* Function: onStatusTemplate Desc: onStatus function to netConnection and netStream params: info -> gets the info from the server NOTE: this function, (onStatusTemplate) is based in Kevin Towes one.You can find this on his book "Macromedia Flash Communication Server MX" ( pangaea newmedia inc ) page 449, apendix. E */ function onStatusTemplate(info){ info_array=info.code.split("."); trace("·······················Start the message"); trace(new Date()); trace("message received to object: "+info_array[0]); trace("LEVEL: "+info.level); trace("CODE: "+info.code); /*Here it comes the rest of the template. it's a really large code, so when i finish the entire app, i put it here to download */ } // NetConnection.prototype.onStatus=onStatusTemplate; NetStream.prototype.onStatus=onStatusTemplate; //Connect to server( below onStatus ) nc.connect("rtmp:/videolistado/videomusic"); /* Function: audioVideoStreamer Desc: Create objects of audiovideoStreamer class. It allows to play audios ( mp3 ) and videos ( flv ). It is defined as _global Params: streamName -> stream name videoObjectName -> video object name netConnectionName -> netconnection name soundmcName -> mc to control volume bufferTimeC -> stablish buffer */ _global.audioVideoStreamer=function(streamName, videoObjectName, netConnectionName, soundmcName, bufferTimeC){ //Asig. this.my_ns=streamName; this.my_video=videoObjectName; this.my_nc=netConnectionName; this.my_sound_mc=soundmcName; this.my_buffer=bufferTimeC; // 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 /* Function: doPlay Desc: Starts to play the selected stream. note that is different the way we play a stream if it's an audio stream or a video stream Params: selectedStream -> selected stream selectedType -> 2 possible values, "flv" or "mp3" */ 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 /* Function: doRewing Desc: rewing 10 seconds the stream Params: no params */ audioVideoStreamer.prototype.doRewing=function(){ this.my_ns.seek(this.my_ns.time-10); };//doRewing /* Function: doForward Desc: forwar 10 seconds the stream Params: no params */ audioVideoStreamer.prototype.doForward=function(){ this.my_ns.seek(this.my_ns.time+10); };//doForward /* Function: doPause Desc: pause the stream Params: no params */ audioVideoStreamer.prototype.doPause=function(){ this.my_ns.pause(); };//doPause /* Function: doDisconnect Desc: Finish the stream Params: no params */ audioVideoStreamer.prototype.doDisconnect=function(){ this.my_ns.play(false); this.my_ns.clear(); };//doDisconnect //////////////////////////USE of this 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(); };

of course i have on the screen an video object: my_video, a listbox component: my_lb and buttons.: stop_btn, pause_btn, rewing_btn, forward_btn

It will continue...

As always, sorry for my terrible english :(