From my experience from watching streaming video online, it seems like as long as you have a fast enough connection, the video will play fine.
However, if there is anything between you and the video server slowing down your connection, the ubiquitous video buffering algorithm becomes apparent:
while(user is trying to enjoy video)
{
if(at least 2 seconds of video has buffered)
{
play()
}
else
{
pause()
//hope network conditions improve
}
}
Depending on your mood, this can be hellishly frustrating to endure, or completely hilarious to see that the video player thinks that playing a few seconds and pausing over and over again is the right thing to do.
Is it possible to buffer videos in a way that would make it possible to watch a video with minimal stuttering?
It seems like a logical next step in the above algorithm is to do something like so:
buffer number = 2
annoyance count = 0
while(user is trying to enjoy video)
{
if(at least buffer number of seconds of video has buffered)
{
play()
}
else
{
annoyance count++
pause()
if(annoyance count > 1)
{
buffer number++
}
}
}
Is there a huge technical factor that has yet to be overcome to make videos watchable on slow connections?
Is there a better algorithm that is avoided for some reason (hard to implement, processing power, not well known etc)?
It seems like humans are able to easily calculate how long you need to pause a video on any given connection speed for a smooth playback experience. Why can't computers? It's just math isn't it?