Introduction to Unified Streaming

Unified Packager is a file to file packager, for offline use.

Unified Origin is a software plugin for the Apache webserver, which takes an ingest in one format that it can package on-the-fly to all formats.

It can be used to stream Video on Demand (VOD) and Live. For Streaming VOD, it takes HLS, MP4 or fMP4 as an ingest, while for streaming Live, an fMP4 (HSS, CMAF) ingest is required. All of its features and requirements are part of our Factsheet.

The Unified Origin plugin comes in the form of the mod-smooth-streaming package and uses information from a manifest file on the server (the 'server manifest') to generate the different client manifest files (HSS, HDS, DASH) and playlists (HLS) that a player can use for playout.

Additional, optional customizations can be applied to the client manifest with Manifest Edit, a plugin-based python manifest editing engine (DASH format only).

Unified Origin will automatically create the corresponding client manifest or playlist at the moment that a player requests a stream in a certain format. From its ingest, Unified Origin will then also generate the corresponding fragments in the requested format (i.e. audio, video and subtitles). Each format has its own Player URL to request the corresponding stream for playout.

As the manifest files and playlists for the different clients are created on-the-fly, they are not stored on disk. The server manifest file, on the other hand, is stored on disk and needs to be generated by our Unified Packager, which comes in the form of the mp4split package that is part of Unified Origin's full setup.

Unified Remix 'mixes' media from various origin into a single stream. Clients and playback devices see the stream coming from a single origin and having a timeline without any discontinuities.

Remix uses a playlist, in SMIL format, as its single input format. It transforms this SMIL file into a reference MP4 (ISO BMFF) file for Unified Origin to use as input (or similarly for Unified Packager to package from).

The introduction of a playlist allows for many new use cases, for instance:

Even more advanced uses as for instance Dynamic Ad Replacement (Live) will become possible.

Since Unified Origin delivers all playout formats from the remixed MP4, we now have a unified approach to deliver to all devices from a single SMIL playlist!

Resolving a playlist server side has the following benefits:

  • It works everywhere, on all devices, as they see only one stream.

  • No player development is required, so larger audience can be reached as it 'just works'.

  • Flexibility. Changes can be made server side, without having to update devices or apps.

On a technical level, the MP4 file Unified Remix creates references the original content (e.g. a URL). The new MP4 file has its own new timeline (hence there are no discontinuities). It also makes sure that the various source clips are correctly aligned and/or padded with e.g. audio silence frames to keep A/V sync.

To mitigate any potential interoperability issues its recommended the same version of Unified Remix is also used for Unified Origin or Unified Packager in any workflow.

Flow diagram

The following flow diagram depicts components and their relations.

            cms   unified transcode (jit)                              rule sets
             |             |                                         /
 player --> cdn --> unified origin --> unified remix --> smil origin - ad networks
    |                      |                                         \
[metrics]             a/v sources                                      broadcast epg

All components are HTTP based. Results are easily proxied and cached. Like Unified Origin and Unified Packager, Unified Remix supports authentication when making requests to S3. When using Remix via the command-line interface, configuration works the same as for mp4split, see Authenticate requests to AWS S3. Using Apache's subrequest feature is supported as well.


Please note that this flow diagram is for Unified Origin but Remix could also be used as a pre-processing step for Packager.