Adaptive bitrate streaming is a technique used in streaming multimedia over computer networks.
While in the past most video or audio streaming technologies utilized streaming protocols such as RTP with RTSP, today's adaptive streaming technologies are based almost exclusively on HTTP,[1] and are designed to work efficiently over large distributed HTTP networks.
Adaptive bitrate streaming works by detecting a user's bandwidth and CPU capacity in real time, adjusting the quality of the media stream accordingly.[2] It requires the use of an encoder which encodes a single source media (video or audio) at multiple bit rates. The player client[3] switches between streaming the different encodings depending on available resources.[4] This results in providing very little buffering, faster start times and a good experience for both high-end and low-end connections.[5]
More specifically, adaptive bitrate streaming is a method of video streaming over HTTP where the source content is encoded at multiple bit rates. Each of the different bit rate streams are segmented into small multi-second parts.[6] The segment size can vary depending on the particular implementation, but they are typically between two and ten seconds.[4][6] First, the client downloads a manifest file that describes the available stream segments and their respective bit rates. During stream start-up, the client usually requests the segments from the lowest bit rate stream. If the client finds that the network throughput is greater than the bit rate of the downloaded segment, then it will request a higher bit rate segment. Later, if the client finds that the network throughput has deteriorated, it will request a lower bit rate segment. An adaptive bitrate (ABR) algorithm in the client performs the key function of deciding which bit rate segments to download, based on the current state of the network. Several types of ABR algorithms are in commercial use: throughput-based algorithms use the throughput achieved in recent prior downloads for decision-making (e.g., throughput rule in dash.js), buffer-based algorithms use only the client's current buffer level (e.g., BOLA[7] in dash.js), and hybrid algorithms combine both types of information (e.g., DYNAMIC[8] in dash.js).
{{cite journal}}
: Cite journal requires |journal=
(help)