Getting Started with VOD

This tutorial is meant to quickly get you up and running with streaming VOD. It touches on the basic knowledge needed to stream video files using the Unified Streaming Platform (USP). This tutorial presupposes a running installation of the USP evaluation and covers streaming MP4, ingesting HLS and ingesting from the cloud. If you haven't installed the USP evaluation yet, the [Docker Express] explains how to do that in the quickest possible way. For more in depth documentation about using USP to stream VOD and the many options that are available, please have a look at Unified Origin - VOD.

VOD Basics

With a fresh USP install, everything is in place for you to start streaming video in multiple formats using just one command. To ensure your setup is running properly, check Verify Your Setup.

In the case of VOD, it is possible to ingest HLS or MP4, and stream to the wide variety of formats supported by USP. To do this, all that needs to be done is to use Unified Packager to create a manifest file. This file contains all the information about the content and its options, and for VOD presentations, it will have an .ism extension.

Using the manifest, Unified Origin will know where to find the video files (as well as separate subtitles and audio) and be able to create the different play out formats with your options on the fly.

License Key Wrapper

For the sake of convenience, it is advisable to create a license key wrapper before you start this tutorial. This wrapper will make sure that you don't need to pass on the license key to mp4split (Unified Packager) every time you run it.

Creating a wrapper is quickly done and explained in the documentation for our license key Unified Packager. If you choose not to create a wrapper, don't forget to pass the full path to the license key every time you run Unified Packager. Using the command from the first step of this tutorial as an example, you pass on the license key like this:

mp4split --license-key=/path/to/usp-license.key -o tos-mp4.ism \
  tears-of-steel-aac-128k.isma \
  tears-of-steel-avc1-400k.ismv \

Streaming an MP4

The preferred input format for streaming VOD is fragmented MP4. Assuming you're in the Tears of Steel video directory of the USP evaluation installation, the command below will create a manifest in that directory, referencing two fragmented MP4 video files (with different bitrates) and one separate audio file:

mp4split -o tos-mp4.ism \
  tears-of-steel-aac-128k.mp4 \
  tears-of-steel-avc1-400k.mp4 \

In case you edited your hosts file to map the IP address of your (virtual) server to the (check Verify Your Setup for how to do that), the manifest that you have just created can be accessed via the following URLs, each of which allows you to stream the video in a different format:

Format Player and Stream URL


As HLS is an Apple-specific format, opening the URL that links to the .m3u8-playlist above will only result in a video playing when opened in Safari (on either macOS or iOS).

The URLs are outlined in more depth in the Player URLs section.

Ingesting HLS (HTTP Live Streaming)

Apart from ingesting (fragmented) MP4, USP also allows you to ingest HLS for the purpose of streaming VOD. With the following command, we will take the HLS output streamed by Unified Origin on our demo site as a source, and create an new server manifest for it:

mp4split -o tos-hls.ism \ \

Apart from the different file name, the URL to access the video stream is the same as when a MP4 would have been ingested by Unified Origin:

Format Player and Stream URL


If you would like to ingest your own HLS formatted content to stream as VOD, take into account that there are some limitations and possible workarounds that you should be aware of. See Using HTTP Live Streaming (HLS) as source for more information.

Ingesting from the cloud

As the HLS ingest example shows, source files don't have to be stored locally per se. One plausible scenario, especially when working with large content libraries, would be to store your source files in the cloud. The following command takes Tears of Steel content that is hosted on USP's Amazon S3 storage, and creates a local server manifest for it:

mp4split -o tos-cloud.ism \ \ \ \


Many more options are available when working with remote storage. The different storage providers that you can choose from of course, but it's possible to store your manifests remotely as well, for example. See Remote Storage for more information.

And once again, apart from the different file name, the video stream can be accessed and played in the different playout formats by using URLs similar to those in the two earlier examples:

Format Player and Stream URL