All the download behavior is controlled by how you compose their SMIL playlist.
Case1 : [Download on the fly]
First of all, all the download happens when player actually tries to playback( on the fly).
In the following SMIL
<video src=video1 />
<video src=video2 />
<video src=video3 />
What player do is as following :
Check local storage first , if player do not have that media in its storage, download from server.
If the media is already downloaded in player’s storage, player will play the local content without downloading again.
In this SMIL playlist, media item being downloaded happens when player actually tries to playback that media item.
If any media item fails to be downloaded during the 1st playloop , player tries to download again in the next loop, until the sequence loop end it’s life
To illustrate :
Video 1 download and play => Video 2 (fail) => Video 3 download and play
Video 1 play from cache => Video 2 retry download => Video 3 play from cache
Case2 : [Download before playback]
In case 1 , media item downloads when player tries to playback – if the media is a large video and the network is slow, there will be a huge gap that nothing being displayed on screen while downloading certain video.
To overcome this, user can make use the SMIL player functionality – prefetch (http://www.a-smil.org/index.php/Prefetch )