We recently released a new feature for Storyline 360: publish to video. Our Customer Support team estimates that this is one of the most requested features ever, and we’re thrilled to deliver it. In this article, I want to go behind-the-scenes and share how the publish-to-video feature for Storyline 360 came together.
The Challenge
We had two high-level goals in mind when we first started thinking about how we might build a feature that could convert a Storyline course into a video:
- Make it easy. We wanted e-learning developers to be able to turn their courses into high-quality video with just the click of a button.
- Make it look (and sound) just like regular published output. It was important to us that resulting video provide learners with the same experience as regular published output.
To achieve our second goal, we knew that we needed to use our existing published output and runtime (the code that executes in a browser or mobile device and plays your course for learners) to create videos. We also knew that we couldn’t rely on Flash due to its impending phase-out. In the end, the key to building the publish-to-video feature was the new and improved HTML5 output in Storyline 360 and Storyline 3.
The Approach
Making HTML5 the default publishing option for Articulate 360 authoring apps required a lot of changes that may not be obvious to most users.
For example, before Storyline 360, we used Flash to show authors their course content in Preview mode. As we phased out Flash, we began using the Chromium Embedded Framework, aka CEF (pronounced “seff”), to show HTML5 output inside Storyline. Now, we’re using the same underlying browser engine that powers the popular Google Chrome web browser to preview courses within Storyline 360.
One of the really powerful features of CEF is its ability to create screenshots of HTML content quickly. This screenshot capability became the backbone of our technical approach to publishing videos.
If that’s confusing, it can help to understand the role that CEF plays in converting interactive Storyline 360 courses to MP4. Here’s how the new feature works, step by step:
- Storyline publishes HTML5 output to a temporary folder.
- Storyline initializes CEF and points to the HTML5 output file in the temporary folder. Rather than playing the course, however, playback is suspended so that the first slide of the course is loaded but paused.
- CEF captures a screenshot and sends it to our video encoder. The screenshot becomes an individual frame in the resulting video.
- Storyline instructs CEF to advance the timeline of the current slide by 1/30th of a second. That gives the course creator a video that is 30 frames per second.
- CEF repeats steps 3 and 4 until it reaches the end of the course.
- As CEF reaches the end of one slide, it automatically advances to the next slide. (Note: The exact way it behaves depends on the options the course creator selects.)
What About Audio?
CEF only captures video frames—not audio. A high-quality audio track is created separately and then synced up with the resulting video.
As CEF advances through a course frame-by-frame, it tells Storyline 360 when a piece of media (audio or video) is supposed to start playing. Storyline 360 records all these events along with the frame number and the exact time within the video that the media started.
After all video frames have been captured, Storyline 360 looks at the media timing information and constructs an audio track that is the same duration as the published video, with all media audio synced up to the exact frame and the time that it should play. The final step of the publish process mixes this audio track into the video until—voilà!—you have an MP4 file.
“Oversimplified” Is an Understatement
This post represents a simplified overview of the technical approach to the publish-to-MP4 feature in Storyline 360. The engineering team faced many complicated technical hurdles while developing this feature—far more than I can go into in this article. My hope for this post is that it provides some interesting insight to nontechnical folks into how we brought one of the most requested Storyline features ever to life.