Video is streamed by transmitting chunks of video data called packets. Now even if a single packet of data is lost due to any interruption, the video player application at the receiving end stops receiving data and waits & waits interminably until the lost packet is received.
This can quickly become a problem, as the other packets in the stream will continue to be delivered and will pile up haphazardly unable to be viewed by the end user.
For example, if packet #20 was lost, the playback of the video would freeze until #20 is received. This happens even as later packets, such as packets 21-100 arrive. Then, once #20 finally gets there, the later packets 21-100 would be delivered all at once, causing a huge backup and a disruption of the video stream, rendering the video almost unviewable!
To avoid this problem from constantly recurring, the video player creates what is known as a Buffer. A Buffer saves data packets in advance, which allows the video to continue to play from the buffer even while waiting for a lost packet to be received.
That being said, it’s still possible for the viewing connection to be so poor that the new packet of data still does not arrive by the time the buffer is emptied. When this happens, the video playback must now stop and the player will wait until more data is received to refill the Buffer before it can continue playback.
In many cases, the player keeps the video frozen for much longer than is necessary to allow the buffer to be refilled before playback can start up again.
It is important to note that while buffering (ie. waiting for the data packets to catch up) usually happens at the viewer end due to low download speeds of their connections, it can also happen if the broadcaster does not have a fast enough upload speed or if there are issues with network instability. In that instance, the disruption would become global, affecting every viewer, rather than just the viewers with slower connections.
So what is the solution?
The best solution (albeit a more complex & slightly more expensive one) is Adaptive Streaming, also known as ABR or Adaptive Bit Rate streaming.
The cheaper yet workable solution is for the broadcaster to upload the video at a slower bit rate to accommodate the lowest common denominator of their audience’s internet connection speeds.
While this method may result in a slightly lower resolution of the ensuing video stream, it is at least a guarantee of reliability that avoids the horror of buffering video!
The reduction in quality of the video is not too noticeable – and it is a well known fact that audiences don’t care half as much about video quality as they would about their stream constantly freezing and buffering.