[Red5] simple red5 setup ?

Thijs Triemstra | Collab thijs at collab.nl
Tue Nov 1 07:03:36 EST 2005


The FLV playback needs the serverside scripts below to work with  
flashcom flv's..  you can also find this main.asc in the Flash8/ 
Samples/Components/FLVPlayback folder on your hd. not sure if and how  
this works with red5 though :)

Thijs


application.onConnect = function(p_client, p_autoSenseBW)
{
     //Add security here

     this.acceptConnection(p_client);

     if (p_autoSenseBW)
         this.calculateClientBw(p_client);
     else
         p_client.call("onBWDone");
}

Client.prototype.getStreamLength = function(p_streamName) {
     return Stream.length(p_streamName);
}

Client.prototype.checkBandwidth = function() {
     application.calculateClientBw(this);
}


application.calculateClientBw = function(p_client)
{

     p_client.payload = new Array();
     for (var i=0; i<1200; i++){
         p_client.payload[i] = Math.random();    //16K approx
     }

     var res = new Object();
     res.latency = 0;
     res.cumLatency = 1;
     res.bwTime = 0;
     res.count = 0;
     res.sent = 0;
     res.client = p_client;
     var stats = p_client.getStats();
     var now = (new Date()).getTime()/1;
     res.pakSent = new Array();
     res.pakRecv = new Array();
     res.beginningValues = {b_down:stats.bytes_out,  
b_up:stats.bytes_in, time:now};
     res.onResult = function(p_val) {

         var now = (new Date()).getTime()/1;
         this.pakRecv[this.count] = now;
         //trace( "Packet interval = " + (this.pakRecv[this.count] -  
this.pakSent[this.count])*1  );
         this.count++;
         var timePassed = (now - this.beginningValues.time);

         if (this.count == 1) {
             this.latency = Math.min(timePassed, 800);
             this.latency = Math.max(this.latency, 10);
         }


         //trace("count = " + this.count + ", sent = " + this.sent +  
", timePassed = " + timePassed);

         // If we have a hi-speed network with low latency send more  
to determine
         // better bandwidth numbers, send no more than 6 packets
         if ( this.count == 2 && (timePassed<2000))
         {
             this.pakSent[res.sent++] = now;
             this.cumLatency++;
             this.client.call("onBWCheck", res, this.client.payload);
         }
         else if ( this.sent == this.count )
         {
             // See if we need to normalize latency
             if ( this.latency >= 100 )
             { // make sure we detect sattelite and modem correctly
                 if (  this.pakRecv[1] - this.pakRecv[0] > 1000 )
                 {
                     this.latency = 100;
                 }
             }

             delete this.client.payload;
             // Got back responses for all the packets compute the  
bandwidth.
             var stats = this.client.getStats();
             var deltaDown = (stats.bytes_out -  
this.beginningValues.b_down)*8/1000;
             var deltaTime = ((now - this.beginningValues.time) -  
(this.latency * this.cumLatency) )/1000;
             if ( deltaTime <= 0 )
                 deltaTime = (now - this.beginningValues.time)/1000;

             var kbitDown = Math.round(deltaDown/deltaTime);

             trace("onBWDone: kbitDown = " + kbitDown + ", deltaDown=  
" + deltaDown + ", deltaTime = " + deltaTime + ", latency = " +  
this.latency + "KBytes " + (stats.bytes_out -  
this.beginningValues.b_down)/1024) ;

             this.client.call("onBWDone", null, kbitDown,  deltaDown,  
deltaTime, this.latency );
         }
     }
     res.pakSent[res.sent++] = now;
     p_client.call("onBWCheck", res, "");
     res.pakSent[res.sent++] = now;
     p_client.call("onBWCheck", res, p_client.payload);

}

Op 1-nov-2005, om 3:53 heeft John Grden het volgende geschreven:

> Hey Adam, I tried this with the FLV playback and it failed here as  
> well.  Not sure why that would be, but I have to assume there's  
> some calls that Red5 hasn't implemented yet ;)  That's very likely  
> since the only one that I know of is "play" on the NetStream object  
> - that was the last I had heard.  So while metaData and play work,  
> there are probably a ton of other things that need to be added.
>
> However, if you're wanting to build your own app, this code DOES work:
>
> var nc = new NetConnection();
> nc.connect("rtmp:/oflaDemo/demoService");
> var ns:NetStream = new NetStream(nc);
> ns.onStatus = function(obj)
> {
>     trace(obj.code);
> }
> av.attachVideo(ns)
> ns.play("LUCASARTS_FLIP_320_high.flv");
>
> Just drag a new video object on stage and name it "av" and you're  
> good to go!
>
> On 10/31/05, Adam Procter <Adam.Procter at luton.ac.uk> wrote:
> I am trying to connect to my red 5 server from scratch
> and to try it out with flash 8 and the video components ?
>
> I have added the following code to frame
>
> my_nc = new NetConnection();
> my_nc.connect(" rtmp://localhost:1936/oflaDemo/demoService")
>
> I have then added a FLV playback component
> do I just add contentpath as on2_flash8_w_audio.flv   ? or other  
> items in the flvs
> folder ?
>
> Adam
>
> _______________________________________________
> Red5 mailing list
> Red5 at osflash.org
> http://osflash.org/mailman/listinfo/red5_osflash.org
>
>
>
> -- 
> John Grden - Blitz
> _______________________________________________
> Red5 mailing list
> Red5 at osflash.org
> http://osflash.org/mailman/listinfo/red5_osflash.org
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://osflash.org/pipermail/red5_osflash.org/attachments/20051101/fabae5b1/attachment.htm


More information about the Red5 mailing list