Convert video to SCORM: wrap an MP4 in a SCORM package
A video isn't SCORM by itself. To convert it, put the MP4 in a ZIP with an imsmanifest.xml, as a static asset or inside a page that reports completion.

To convert a video to SCORM, you don't change the video: you put the MP4 inside a SCORM package, a ZIP file with an imsmanifest.xml manifest at its root that tells the learning management system (LMS) what to import and launch. The video either goes in as a static asset, which cannot report anything to the LMS, or inside a web page (a SCO) that reports its status to the LMS through SCORM's JavaScript API.
The SCORM facts below come from Rustici Software's SCORM Explained, Content Packaging and Run-Time pages, read on 2026-09-28. If the video is made with Sume, it arrives as an MP4 file; see Generate avatar video. Packaging is a separate step.
Is there a SCORM video format?
No. SCORM stands for "Sharable Content Object Reference Model", and it governs two things: how content is packaged and how it exchanges data with the LMS at run time. The video stays an ordinary file inside the package. All SCORM content must be web-deliverable and runs in a web browser session, so the video has to play in a browser page.
| Package part | What it is |
|---|---|
imsmanifest.xml | The XML manifest that describes the content; it must be at the root. |
| Resources | The parts of the course, each a SCO or an Asset, listing every file it needs. |
| Organizations | A tree of items; an item without children points to a resource. |
| Schema files | .xsd and .dtd files the content should include to be fully conformant. |
| PIF | The package as a ZIP file, the most common SCORM delivery format. |
Asset or SCO: how does the LMS track the video?
- As an Asset: static content that cannot talk to the LMS. In a course of nothing but launchable assets, no run-time calls are needed, and each asset is considered completed immediately upon launch.
- As a SCO: a page that can talk to the LMS. It finds the LMS's JavaScript API, calls
Initialize, reports status, and must callTerminatein every exit scenario. The API object is namedAPIin SCORM 1.2 andAPI_1484_11in SCORM 2004. - Status element:
cmi.core.lesson_statusin SCORM 1.2;cmi.completion_statusandcmi.success_statusin SCORM 2004.
<video id="lesson" src="lesson.mp4" controls></video>
<script>
// SCORM 2004 sketch: the LMS puts API_1484_11 in a parent
// of this window or of its opener.
function findApi(win) {
while (win) {
if (win.API_1484_11) return win.API_1484_11;
if (win.parent === win) return null;
win = win.parent;
}
return null;
}
var api = findApi(window) || (window.opener && findApi(window.opener));
if (api) {
api.Initialize("");
document.getElementById("lesson").addEventListener("ended", function () {
api.SetValue("cmi.completion_status", "completed");
api.Commit("");
});
window.addEventListener("pagehide", function () { api.Terminate(""); });
}
</script>How do I convert a video to SCORM, step by step?
- Finish the video first, with any captions burned into the MP4.
- Write an HTML page that plays it; for a SCO, add the API calls above.
- Write
imsmanifest.xmlwith one resource that lists the page and the MP4 as its files, and set its `adlcp:scormType` toscoorasset. - Zip the folder with
imsmanifest.xmlat the root, plus the schema files for full conformance. That ZIP is the package. - Import it into your LMS and check that the completion status arrives.
Which SCORM version should I pick?
Check which versions your LMS imports. SCORM.com calls SCORM 1.2 the most widely adopted version and says every major LMS continues to support it. SCORM 2004's key addition is sequencing and navigation, which lets content specify behavior within a SCO and between SCOs. If your LMS takes a plain video file and you don't need completion tracking, uploading the MP4 directly skips packaging altogether.
How do I make the training video to package?
Start from a finished MP4. With Sume, a talking avatar video covers an estimated 4-60 seconds per job and completed results can include public media.sume.com video files; Timeline 1.0 joins clips into one MP4 of up to 1,800 seconds. Video captions burns captions onto a clip before you package it. The AI training video generator post walks through the whole build.
Sources
Related posts
More in Use cases
- Corporate talking head video with AI: CEO and team updates
Make a corporate talking head video with AI: script the message, pick a presenter, render it in 16:9 or 9:16, and host the file where staff sign in.
- Creatify alternatives: link, image or script to video ad
Creatify alternatives compared on what they start from (a product link, product images, or a script) and whether batches run over an API. Dated table.
- Customer onboarding video: one short clip per setup step
A customer onboarding video walks a new customer through one step of getting started. Render one short AI avatar clip per step from your backend.
- Direct response video ads: what they are and how to make them
A direct response video ad asks for one action now, such as buy or sign up, and is judged by that response. Its structure, and how to make variants with AI.
Written by Sume