Progressive download

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

A progressive download is the transfer of digital media files from a server to a client, typically using the HTTP protocol when initiated from a computer. The consumer may begin playback of the media before the download is complete. The key difference between streaming media and progressive download is in how the digital media data is received and stored by the end user device that is accessing the digital media.

A media player that is capable of progressive download playback relies on meta data located in the header of the file to be intact and a local buffer of the digital media file as it is downloaded from a web server. At the point in which a specified amount of data becomes available to the local playback device, the media will begin to play. This specified amount of buffer is embedded into the file by the producer of the content in the encoder settings and is reinforced by additional buffer settings imposed by the media player.

History

Initially the digital media file type known as JPEG was the first visual media to render a progressive visual display as the digital media was downloaded and actually referred to as a progressive download. The distinction between the technical behavior of progressive download as opposed to the common or commercial use of the term progressive download to describe that behavior was not documented and there is a good deal of question regarding the origin of the term versus the origin of the technical implementation. Apple in reference to their QuickTime media player employed the term Fast Start[1] in 1997, to describe what was commercially referred to as progressive download playback of encoded digital media content.

HTTP progressive download versus streaming media

The end user experience is similar to streaming media, however the digital file is downloaded to a physical drive on the end user's device, the digital file is typically stored in the temp folder of the associated web browser if the digital media was embedded into a web page or is diverted to a storage directory that is set in the preferences of the media player used for playback. The digital media file will stutter or stop playback if the rate of playback exceeds the rate at which the file is downloaded. The file will begin to play again after further download.

This fast start playback is the result of moving the meta data from the end of the digital media file to the front, this move of the meta data gave the media player all the information it required to begin playback as the file was still being downloaded. Prior to that change, the meta data summary was located at the end of a digital media file and the entire file would need to be downloaded in order for the meta data to be read and the player begin playback.[2]

Seeking

Initially, the file is played from the beginning. A user may wish to point to a part of the file which haven't been downloaded yet. This capability is called seeking[3] and it makes possible to download and start playing any part of the media file. That is often referred to as pseudo-streaming.

For Flash video seeking requires a list of seek points in the media file metadata. These points are offsets in the video (both in seconds and bytes) at which a new key frame starts. A web server or a media server which handles the download, must support seek points in query string of requests for downloading data.

For other types of media files such as MP4 or MKV, web servers must be capable of handling a special offset parameter. The offset parameter name differs for various servers so it must be specified in player settings.

Some servers support seeking via additional modules only, they are specified below. Seeking parameter names are written in italic.

Server Flash seeking MP4 seeking
Apache HTTP Server mod_h264 start
mod_flvx start
mod_h264 starttime
lighttpd start mod_h264 starttime
Nginx http_flv_module start http_mp4_module start
Nimble Streamer start start

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.

External links

  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.