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, 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, CMAF 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
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
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 'mp4split'. 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 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.
We'll use the two more general options to further configure our HLS output:
--hls.client_manifest_version=4to make sure our HLS output supports basic features like multiple audio tracks
--hls.minimum_fragment_length=8to explicitly define the length of our HLS segments, instead of relying on the default (the choice is '8' here, because it needs to be a multiple of the GOP length that your content is encoded with (4 seconds in the case of our Tears of Steel test content)
mp4split -o tos-mp4.ism \ --hls.client_manifest_version=4 \ --hls.minimum_fragment_length=8 \ /var/www/tears-of-steel/tears-of-steel-aac-64k.mp4 \ /var/www/tears-of-steel/tears-of-steel-aac-128k.mp4 \ /var/www/tears-of-steel/tears-of-steel-avc1-400k.mp4 \ /var/www/tears-of-steel/tears-of-steel-avc1-750k.mp4 \ /var/www/tears-of-steel/tears-of-steel-avc1-1000k.mp4 \ /var/www/tears-of-steel/tears-of-steel-avc1-1500k.mp4
If you have edited your hosts file to map the IP address of your (virtual)
server to the
(check Verify Your Setup for how to do that), you can access the
manifests via the following URLs:
To watch the streams you need the right player. A HLS stream can be played by Safari on Apple devices natively. In different contexts you can use a player like hls.js. For DASH, playback is possible through a player like DASH.js or any of the other players that support DASH.
The URLs are outlined in more depth in the Player URLs section.
In addition to (fragmented) MP4, USP also allows you to ingest HLS for VOD streaming The following command creates a server manifest from our demo sites HLS output:
mp4split -o tos-hls.ism \ https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/tears-of-steel-audio_eng=128002.m3u8 \ https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/tears-of-steel-video_eng=2200000.m3u8
The URL to the video stream is exactly the same as if created from MP4:
When ingesting your own HLS formatted content to stream as VOD please note there are some limitations and workarounds of which you should be aware. See Using HTTP Live Streaming (HLS) as source for more information.
As shown above source files need not be stored locally. Cloud storage, especially when working with large content libraries, is one such scenario. The following command creates a local server manifest for material hosted on USP's Amazon S3 storage:
mp4split -o tos-cloud.ism \ http://usp-s3-storage.s3.amazonaws.com/tears-of-steel/tears-of-steel-2.mp4 \ http://usp-s3-storage.s3.amazonaws.com/tears-of-steel/tears-of-steel-3.mp4 \ http://usp-s3-storage.s3.amazonaws.com/tears-of-steel/tears-of-steel-4.mp4 \ http://usp-s3-storage.s3.amazonaws.com/tears-of-steel/tears-of-steel-64k.mp4
Once again the video stream can be accessed and played in the different playout formats by using URLs appended as per earlier examples: