Adaptive bitrate streaming (ABS) is a performance management technique for streaming multimedia over computer networks. Video streaming technology started to be developed and widely used based on protocols such as RTP with RTSP. New adaptive streaming technologies are based on HTTP, and are used in large distributed HTTP networks such as the Internet.
Traditional streaming generally uses a stateful protocol such as Real-Time Streaming Protocol (RTSP). Once a client connects to the streaming server the server keeps track of the client’s state until the client disconnects again. This causes frequent communication between the client and the server. The server sends a continuous stream of packets using UDP or TCP transport.
HTTP is a stateless protocol. When a client requests some data, the server responds by sending the data and the transaction is terminated. Each HTTP request is handled as a completely standalone one-time transaction.
An ABS system will dynamically monitor the CPU and memory capacity of the client, as well as network performance. Based on these measurements, it will make video quality adjustments.
The source video stream is split into a 2D array of segments. In one dimension, the video is cut according different time intervals. The segment size can vary depending on the particular implementation, but they are typically between 2 and 10 seconds. In the second dimension, the video is encoded multiple times at varying levels of quality. The multimedia player at the client side is able to switch between the different bitrate segments, choosing the segments that correspond best to the client’s bandwidth and available resources.
The server provides each client with a table of URLs. Every URL points to a specific time interval at a specific quality. All intelligence is implemented in the client; the server can be any HTTP-compliant device serving regular files.
At the starting moment, the client may request segments from the lowest bit rate stream. If the client discovers that the download speed is high enough, it can request the next higher bit rate segments. If the client discovers the download speed is too low, and therefore the network throughput has deteriorated, it can request a lower bit rate segment.