Double Buffering for smooth netstream FLV playback

This 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;

	}
}

4 Responses

  1. Kor Says:

    what is the infoObject in your code?
    What does it do?
    How do you create one?

  2. Import from China Says:

    Great info - keep up the great work.

  3. holographix Says:

    I am experimenting with this in AS2 on a progressive video but not seeing any effect from this over a live site. Perhaps I need a very slow net connection to really test this.

  4. hanan Kassab-Hassan Says:

    tarik mou alil ya ibni

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.