Storyline preload handling

Dec 15, 2012

I have a series of mp4 videos at the beginning of every slide as an intro (plays automatically ), each of which is around 1 MB big and 5 seconds long. My questions are:

1, if this video hasn't been fully loaded, will the timeline of storyline continue regardless?

2, while the user is viewing the 1 first slide, will all the videos in the following slide preload?

3, is video streaming supported in Storyline?

4, if possible, please explain in more detail how the preloading is handled in storyline.

Thanks a million.

42 Replies
Phil Mayor

Storyline preloads videos, it should wait for the video to preload then show the slide.

The slide should only show when eneough of the video is available to play and start progressively downloading

Storyline does not support streaming but does progressively download, you could insert a swf that streams your video or insert it as a web object from your media server

Christina Stephenson

I am interested in this also. In Captivate there is the preloader setting to begin the course once say 20% has downloaded. Is there a similar functionality in Storyline? I have a 7MB course and my client is concerned that it is taking too long to load on slower internet connections (many of their associates are on such connections) - they want to know what their different options are for preloading the course.

Thanks!

James Basore

Hello,

I am also interested in finding out (precisely) how preloading works in storyline. I can see that the assets are in "storyline_content" folder rather than all being packaged into the story.swf, however it is not clear to me whether all of these assets are preloaded, or, if there is a percentage, or of there is a hierarchy (audio is preloaded, but video is pulled in as the person reaches the slide)?

Perhaps Storyline preloads 75%? It would be very helpful to understand this, and ultimately, allow the user to customize the preloader.

Mark Marino

I'd love to know more about how Storyline handles preloading behind the scenes with Flash .swf files.  I have some relatively meaty Flash interactions I have built and I have run into issues with getting them to load properly in Storyline over slow WAN connections.  I have followed all the best practices for Flash publishing (AS3, Flash Player 10, 30 fps) and the movie runs great once loaded, but unfortunately, until the .swf is completely loaded, there is no visual indicator to the end-user that the .swf is getting loaded... they just stare at a blank Storyline screen.

I have build a custom preloader into my Flash .swf to display the percent loaded, but Storyline never displays it.  I've tried encapsulating everything in a movieclip and just having the .swf be a 1-frame movie, but that doesn't work b/c Flash Player won't display content on the first frame until the movieclip is loaded.

I'd love to know how to best architect my Flash movies so that they cooperate with the Storyline preloading method.

onEnterFrame (James Kingsley)

SL seems to start preloading by loading the current slide's assets along with the ones before and after. Then it starts loading everything from the first slide to the last. 

My guess is your load indicator doesn't display because SL doesn't display the swf until its 100% loaded. 

Our preloader loads all assets from first to last slide. It tracks the loading and updates the progress bar (and an SL var) so the student can see what is happening. In addition since we are updating that SL var you can build some logic in to disable the Next button until X% is loaded. 

If you want to display progress for an individual SWF I would recommend you build two SWFs. One will be the "real" content the other is a "loader". The "loader" should be same display size as the content. It will perform a simple loadMovieClip to pull in the "real" content while showing progress. Put the "Loader" file on the SL slide. After publishing SL copy the real content into the proper folder to match the path you put in the loader swf.

Keep in mind that mileage will vary.  Caching files is very much dependent on the browser, OS, and user settings. 

Mark Marino

Jason Johnson said:

Idk about SL's behind the curtains voodoo but have u tried putting your preloader on frame 1 with asset loading mechanism and reserve the presentation until slide 2?


Yes, that's exactly how I originally coded it, but when that didn't work, I also tried encapsulating everything in a movieclip on frame 1.  Neither method worked.

Mark Marino

onEnterFrame (James Kingsley) said:

SL seems to start preloading by loading the current slide's assets along with the ones before and after. Then it starts loading everything from the first slide to the last. 

My guess is your load indicator doesn't display because SL doesn't display the swf until its 100% loaded. 

Our preloader loads all assets from first to last slide. It tracks the loading and updates the progress bar (and an SL var) so the student can see what is happening. In addition since we are updating that SL var you can build some logic in to disable the Next button until X% is loaded. 

If you want to display progress for an individual SWF I would recommend you build two SWFs. One will be the "real" content the other is a "loader". The "loader" should be same display size as the content. It will perform a simple loadMovieClip to pull in the "real" content while showing progress. Put the "Loader" file on the SL slide. After publishing SL copy the real content into the proper folder to match the path you put in the loader swf.

Keep in mind that mileage will vary.  Caching files is very much dependent on the browser, OS, and user settings. 

A wheel within a wheel...  yeah, putting a Flash preloader wrapper .swf around the content .swf should work just dandy except that in the content .swf, I am making an ExternalInterface call from the .swf back to Storyline to let Storyline know when the learner has completed the interaction in the .swf... my guess is it would probably still work, but I ran out of time to experiment.  Also, obviously by going this route, we would lose out on Storyline's ability to preload the content in the background, essentially forcing the content to load only when the end-user hits that screen.

I ended up re-rigging things so that a "Loading, please wait..." text box is shown in Storyline rather than in my .swf and when the .swf is completely loaded, it executes the following code:

ExternalInterface.call('GetPlayer().SetVar','stateFromFlash',"flash_loaded");

Then, within Storyline, I have a trigger watching for changes to variable 'stateFromFlash' and when it gets set to "flash_loaded", I hide the loading text box. 

Not the most elegant solution, but it seems to be working fine. 

Maybe when (or if, at this point) the Storyline SDK gets released we will have some better methods for Flash<>Storyline communication???

Pierre Jouan

Mark Marino said: 

I ended up re-rigging things so that a "Loading, please wait..." text box is shown in Storyline rather than in my .swf and when the .swf is completely loaded, it executes the following code:

 ExternalInterface.call('GetPlayer().SetVar','stateFromFlash',"flash_loaded");

Then, within Storyline, I have a trigger watching for changes to variable 'stateFromFlash' and when it gets set to "flash_loaded", I hide the loading text box. 

 Not the most elegant solution, but it seems to be working fine. 

Many, many thanks, it works just great !

I was desperate to find a solution because the preloader I added to my swf just wouldn't work when imported in Storyline.

This is so simple and yet efficient !

Simon Cleary

Hi. I have the opposite problem. How can I prevent SL from preloading? Does preloading only work with native SL assets or does it preload Flash content as well?

The reason is that my company has a steep bandwidth restriction... 80KB per transaction / click. I'm really trying to move away from our old e-learning development methods and SL looks awesome and easy, so it would be nice if  I could disable preloading somehow?

Also, does Studio preload content as well, or is it just SL?

Ashley Terwilliger-Pollard

Hi Simon,

We don't announce release dates for new versions or updates, so to stay up to date on that you may want to enable the "check for updates at start up" within your Articulate programs and I'd also suggest subscribing to the Word of Mouth Blog, following Articulate on Facebook and Twitter. 

The feature request process is described a bit further here - and although this blog post is a bit older, the same set up still applies. 

Sushil Suryawanshi

Hi Pierre Jouan and Mark Marino!

I felt really good reading your discussion on solving the preloading problem. In fact, I am facing the similar problem with my SL output deployment.

Actually we and our clients are habitual to use Adobe Captivate output that shows a download progress bar before starting the eLearning module. Once the module is 100% downloaded, it starts and runs smoothly after that.

With Storyline what is happening is, the module starts off quickly but that's not fully downloaded. So at some point of time, where the assets are not yet downlaoded, the viewer gets stuck! ..and doen't understand why the module stopped in between, and you might know what happens next!

Thanks to your discussion, I could sense that SOMETHING can be done for this!

Can you please explain how exactly to do what Mark suggested and Pierre liked: 

"Re-rigging things so that a "Loading, please wait..." text box is shown in Storyline rather than in my .swf and when the .swf is completely loaded, it executes the following code:

 ExternalInterface.call('GetPlayer().SetVar','stateFromFlash',"flash_loaded");

Then, within Storyline, I have a trigger watching for changes to variable 'stateFromFlash' and when it gets set to "flash_loaded", I hide the loading text box."

You might have understood that I am a new animal on this planet who needs all the details about what all things need to be clicked to do this! :P

It will be a great help! Thanks in advance!

Pierre Jouan

I just noticesd I overlooked Sushil's question.

Actually, the method we're discussing only solves SWF preloading into SL problem (that is heavy SWF animations you imported in SL).

You just add some Actionscript in the SWF movie that will tell SL that it's fully loaded (stateFromFlash variable value will be "flash_loaded")and then you make the "please wait" message disappear in SL with a trigger that watches variable changes.

Sorry Tharishia, that won't help you much...

Chee SK
Pierre Jouan

Actually, the method we're discussing only solves SWF preloading into SL problem (that is heavy SWF animations you imported in SL).

You just add some Actionscript in the SWF movie that will tell SL that it's fully loaded (stateFromFlash variable value will be "flash_loaded")and then you make the "please wait" message disappear in SL with a trigger that watches variable changes.

 

Hi, I am looking for a way to insert the preloader to my slide that contain the swf file. I am not able to do the preloader with the steps mentioned.

I am new to Articulate. Appreciate if someone can provide step by step or sample file for me to refer to.

Many thanks.