Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Progressive download

A progressive download transfers digital media files from a server to a client using protocols like HTTP, allowing playback to start before the entire file is downloaded. Unlike streaming media, progressive download involves storing data locally on the end user device. A compatible media player uses metadata in the file header and a local buffer to begin playback once sufficient data has been downloaded. Buffer sizes are set by the content producer through the encoder and reinforced by media player settings, ensuring smooth playback during the download process.

We don't have any images related to Progressive download yet.
We don't have any YouTube videos related to Progressive download yet.
We don't have any PDF documents related to Progressive download yet.
We don't have any Books related to Progressive download yet.
We don't have any archived web articles related to Progressive download yet.

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 Start1 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 file is downloaded to a physical drive on the end user's device. It is typically stored in the temporary directory of the associated web browser if the medium was embedded in a web page or is diverted to a storage directory that is set in the preferences of the media player used for playback. The 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 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

HTTP Pseudo-streaming (or progressive download), similar to streaming media or HTTP Live Streaming, also supports adaptive bitrate streaming. The disadvantage of HTTP Pseudo-streaming over streaming media is reduced security, since HTTP is easier to sniff compared to RTMP, along with long loading times when seeking larger videos.3

Optimization for HTTP Pseudo-streaming

The MP4 files consist of chunks of data, called atoms. These atoms stores information like subtitles, etc. The special atom, called moov atom is responsible for storing information regarding how to play the video like dimensions, frames per second and such which is important to begin playing a video on HTML video player.4 But atoms can appear in any order, so web servers like Nginx spends some CPU, memory and disk I/O to find the moov atom so that HTML video based clients can start playing the video. To optimize for HTTP Pseudo-streaming, it's important to move the moov atom to the beginning, so that web servers like Nginx optimize for faster pseudo-streaming resulting in playing of playbacks without having to wait for the entire file to arrive or to be scanned.5

ffmpeg -i sample_input.mp4 -movflags faststart -acodec copy -vcodec copy sample_output.mp4

  • -movflags faststart does the optimization by moving the index (moov atom) to the beginning of the file.6
  • -acodec copy extracts the audio from the input file unaltered.
  • -vcodec copy extracts the video from the input file unaltered.

By doing this optimization, we effectively prevent web servers, like nginx, from spending relative amount of computation in finding the moov atom hence increasing the playback performance on HTML video based client.78

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 seeking9 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.

ServerFlash seekingMP4 seeking
Apache HTTP Servermod_h264 start mod_flvx startmod_h264 starttime
lighttpdstartmod_h264 starttime
Nginxhttp_flv_module starthttp_mp4_module start
Nimble Streamerstartstart

See also

References

  1. QuickTime Streaming Server 4.1 (PDF), archived from the original (PDF) on 2011-07-06, retrieved 2010-09-21, Two methods are commonly used to deliver media over the web for real-time viewing: progressive download (Fast Start) and real-time streaming. https://web.archive.org/web/20110706224514/http://sysdoc.doors.ch/APPLE/L29080A_QTSS41_DS.pdf

  2. Understanding the MPEG-4 movie atom, retrieved 2015-07-17 http://www.adobe.com/devnet/video/articles/mp4_movie_atom.html

  3. Peter Luk. "Video Delivery: HTTP Pseudo-Streaming". https://staff.ie.cuhk.edu.hk/~sfluk/wordpress/?p=2590

  4. Billy Hoffman (2016). "Optimizing MP4 Video for faster streaming". https://rigor.com/blog/optimizing-mp4-video-for-fast-streaming/

  5. "Module ngx_http_mp4_module". https://nginx.org/en/docs/http/ngx_http_mp4_module.html

  6. "FFmpeg Formats Documentation". https://ffmpeg.org/ffmpeg-formats.html

  7. "Module ngx_http_mp4_module". https://nginx.org/en/docs/http/ngx_http_mp4_module.html

  8. Billy Hoffman (2016). "Optimizing MP4 Video for faster streaming". https://rigor.com/blog/optimizing-mp4-video-for-fast-streaming/

  9. Pseudo Streaming in Flash, retrieved 2015-07-17 http://support.jwplayer.com/customer/portal/articles/1430518-pseudo-streaming-in-flash