Double Buffering for smooth netstream FLV playback
Posted in Actionscript 2.0, Actionscript 3.0, Code Snippets on May 28th, 2008 by Omar Faleh – 5 CommentsThis post is to highlight the double buffering technique (also known as dynamic buffering) that “should” make video streaming in flash alot smoother without having to prebuffer anything.
This technique works on progressive video download as well as streaming:
var startBufferLength:Number= 2; //keep this in the range 2-4+
var xpandedBufferLength:Number = 15; //arbitrarily highnc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
ns.setBufferTime(3);
ns.autoPlay = false;
ns.onStatus = Delegate.create(this, handleVideoStatus);//(if this was AS3 the syntax will be:
//ns.addEventListener(NetStatusEvent.NET_STATUS, handleVideoStatus);
// if this was Actionscript 3, this following line would be:
// private function handleStatus(event:NetStatusEvent):void
function handleVideoStatus(infoObject:Object)
{
switch (infoObject.code) {
case "NetConnection.Connect.Success":
break;
case "NetStream.Buffer.Full":
ns.bufferTime = xpandedBufferLength;
break;
case "NetStream.Buffer.Empty":
ns.bufferTime = startBufferLength;
break;
case "NetStream.Play.Start":
// the video has started playing, do something here
break;
case "NetStream.Play.Stop" :
// the video has stopped playing (finished)
break;
}
}