Getting Started with VOD¶
Table of Contents
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.
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
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.
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 \ tears-of-steel-avc1-750k.ismv
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 \ tears-of-steel-avc1-750k.mp4
In case you edited your hosts file to map the IP address of your (virtual) server
http://evaluation.unified-streaming.com-URL (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
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.
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 \ http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel.ism/tears-of-steel-audio_eng=127997.m3u8 \ http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel.ism/tears-of-steel-video_eng=2997000.m3u8
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:
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.
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 \ http://usp-s3-storage.s3.amazonaws.com/tears-of-steel/tears-of-steel-avc1-400k.mp4 \ http://usp-s3-storage.s3.amazonaws.com/tears-of-steel/tears-of-steel-avc1-750k.mp4 \ http://usp-s3-storage.s3.amazonaws.com/tears-of-steel/tears-of-steel-avc1-1000k.mp4 \ http://usp-s3-storage.s3.amazonaws.com/tears-of-steel/tears-of-steel-aac-64k.mp4
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: