# Progressive Download

Ein Progressive Download (deutsch: progressives Herunterladen) ist die Übertragung digitaler Mediendateien von einem Server zu einem Client. Typischerweise wird das HTTP-Protokoll benutzt, wenn die Übertragung von einem Computer aus angestoßen wird. Der Benutzer kann bereits mit der Wiedergabe beginnen, bevor die Mediendatei vollständig heruntergeladen worden ist. Der entscheidende Unterschied zwischen Streaming und einem Progressive Download von Mediendateien besteht darin, wie die digitale Mediendatei empfangen und durch das Gerät des Endbenutzers gespeichert wird.
Ein Mediaplayer, der zu einer Progressive-Download-Wiedergabe fähig ist, ist auf intakte Metadaten im Header der Datei angewiesen sowie auf einen lokalen Puffer der digitalen Mediendatei, die vom Webserver heruntergeladen wurde. Ab dem Zeitpunkt, an dem eine bestimmte Menge an Daten beim lokalen Wiedergabegerät verfügbar ist, wird das Medium abgespielt. Die spezifische Größe dieses Puffers ist durch den Hersteller des Dateiinhalts in den Encoder-Einstellungen der Datei eingebettet worden. Sie wird ergänzt durch zusätzliche Puffereinstellungen des Mediaplayers.

## Geschichte

Ursprünglich war der digitale Mediendateityp JPEG das erste visuelle Medium, um eine progressive Bilddarstellung aufzubauen, noch während das Digitale Medium heruntergeladen wurde, und wurde daher als ein Progressiver Download bezeichnet. Die Unterscheidung zwischen dem technischen Verhalten von Progressive Download im Gegensatz zum üblichen Gebrauch des Begriffs Progressive Download, um dieses Verhalten zu beschreiben, wurde nicht dokumentiert, und es gibt sehr viele Fragen, die den Ursprung des Begriffs im Vergleich zu dem der technischen Implementierung betreffen. Im Jahr 1997 benutzte Apple in der Referenz seines QuickTime-Mediaplayers den Begriff des Fast Start, um zu beschreiben, was üblicherweise als Progressive-Download-Wiedergabe von kodierten digitalen Medieninhalten bezeichnet wird.
Der schnelle Beginn der Wiedergabe war das Ergebnis einer Verschiebung der Metadaten vom Ende der digitalen Mediendatei zu ihrem Anfang. Diese Verschiebung der Metadaten gaben dem Mediaplayer alle Informationen, die er benötigt, um die Wiedergabe zu beginnen, noch während die Datei heruntergeladen wurde. Vor dieser Änderung waren die Metadaten am Ende der digitalen Mediendatei gespeichert, und die gesamte Datei musste heruntergeladen werden, um die Metadaten auszulesen und den Mediaplayer mit der Wiedergabe beginnen zu lassen.

## Progressive Download im Vergleich zu Streaming Media

Die Wahrnehmung für den Endbenutzer ist ähnlich der bei Streaming Media. Wenn eine digitale Mediendatei in einer Webseite eingebettet ist, wird sie in den Speicher des Geräts vom Endbenutzer heruntergeladen. Die digitale Mediendatei wird typischerweise entweder im temporären Verzeichnis des beteiligten Webbrowsers gespeichert oder auf ein Verzeichnis umgeleitet, das in den Einstellungen des Mediaplayers für die Wiedergabe angegeben ist. Die Wiedergabe der digitalen Mediendatei wird ruckeln oder gar stoppen, wenn die Datenrate für die Wiedergabe die Datenrate für das Herunterladen überschreitet. Wenn erneut genügend Daten heruntergeladen wurden, wird die Datei weiter wiedergegeben.

## Spulen

Zunächst wird eine Mediendatei so schnell wie möglich von ihrem Beginn an abgespielt. Der Benutzer kann nun den Wunsch haben, an einen Zeitpunkt der Wiedergabe zu springen, der noch gar nicht heruntergeladen wurde. Diese Möglichkeit wird Spulen genannt und erlaubt es, jeden beliebigen Teil der Mediendatei herunterzuladen und wiederzugeben. Dies wird auch als Pseudo-Streaming bezeichnet.
Beim Spulen in Flash-Videos wird eine Liste von Spulpunkten in den Metadaten der Mediadatei benötigt. Diese Punkte sind Offsets im Video (sowohl in Byte als auch in Sekunden angegeben), bei welchen ein neuer Abschnitt beginnt. Ein Webserver oder ein Mediaserver, der einen Download bearbeitet, muss in den Anfragen für herunterzuladenden Daten solche Spulpunkte unterstützen.
Für andere Arten von Mediendateien wie MP4 oder MKV muss der Webserver in der Lage sein, mit speziellen Offsetparametern umzugehen. Die Namen der Offsetparameter unterscheiden sich für die verschiedenen Server und müssen daher in den Einstellungen des Mediaplayer angegeben werden.
Einige Server unterstützen das Spulen mit zusätzlichen Modulen, die in der nachstehenden Tabelle angegeben sind. Die Namen der Spulparameter sind in kursiver Schrift geschrieben.
| Server | Flash spulen | MP4 spulen |
| Apache HTTP Server | mod_h264 start mod_flvx start | mod_h264 starttime |
| lighttpd | start | mod_h264 starttime |
| Nginx | HttpFlvModule start | HttpMp4Module start |
| Nimble Streamer | start | start |