It's my network at the office. It's corrupting data before it reaches the video player. The player uses this bad data and improperly calculates the current buffer size. But read on. Real good read for live streaming people.
I've been doing extensive testing and observing. You know, playing and encoding from different locations. I get the problem repeatedly while playing the video at my office (dual T1's) no matter where I encode from, my office or offsite. I don't get it if I PLAY the video from home on a cable connection or on an AIR card in a laptop; again, no matter the encoding location. I can run for an hour at a ridiculously high bitrate (like 2000kbps). I do not get the bad bufferLength data problem once. The player obviously struggles to keep up with the high data rate but it functions properly. It plays through it's buffered data completely, stops, rebuffers completely, plays and repeats the cycle. At the really high data rate I can rebuffer say 90 times in 60 mins. Never get bad bufferLength data values.
Playing at the office, I repeatedly get bad data values like those listed in this post.
Obviously not a Flash bug. It's bad data reaching the player.
Would love to know the exact anatomy of the problem.
Not an expert but I imagine the player has to calculate the data it thinks is in the buffer based on metadata contained within the live stream. Maybe things like frames per second and resolution and such. Somehow it must get bad values for these things. How? From the stream source - FMS? Not likely. From the same FMS source I get no data errors at the player if I play from home or on an AIR card. So it's the network at my office because it happens on all machines there.
Easy to say well the network has a poor design or faulty switches or routers, but what specifically about that causes the bad data values in the live stream. Is it corrupted packets or lost packets? Would love to know the exact anatomy there.
Turns out this is not my network. I'm experiencing the problem offsite and on 3G cards as well.
I really don't understand it. How can anything I do in my application cause the bufferLengh property to contain the wrong value? I have definitely demonstrated that the numbers returned are wrong. When buffering up and checking the time in the buffer every second, the numbers 37.95-46.794 below are definitely wrong. This must be a bug.
Could someone from Adobe please respond to this issue. It is wrecking playback. I enter repeated buffering cycles because the buffer never fills to the 20 seconds I've set it to. The false values are killing the playback functionality.
I was under the impression that when I play my live stream, and set a bufferTime property of 20 seconds, that it would buffer that full amount before playing. What am I doing wrong? Doesn't seem like there is much to it. Set the NetStream bufferTime property to 20, like so,
ns.bufferTime = 20;
And playback should wait until 20 seconds worth of data are in the buffer before playback occurs. How can I screw this up?