Introduction to Unified Streaming
Above a depiction of the different components and their releation, further outline below.
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 which it then packages 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
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 and HLS).
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
To easily set up your own Unified Origin demo, read our Docker Express tutorial.
For info regarding the use of DRM with Unified Origin, consult our Documentation on DRM.
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 cases as programming live channels by REST API, starting with VOD content and then transitioning to an actual live stream is possible (from EPG to event and back). This is provided by Unified Virtual Channel.
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. Like Unified Origin and Unified Packager, Unified Remix supports authentication when making requests to S3.
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.
The following flow diagram depicts components and their relations.
cms unified transcode (jit) rule sets | | / player --> cdn --> manifest --> unified origin --> unified remix --> smil origin - ad networks | edit | \ [metrics] a/v sources broadcast epg
Please note that the above flow diagram is for Unified Origin but Remix could also be used as a pre-processing step for Packager.
All components are provided as a webserver plugin repsonding to HTTP requests as well as an executable with a CLI.
This allows for many differnt deployment options, from straightforward shell scripting to advanced microservice architectures using Docker or Kubernetes either on-prem or in the cloud (see Cloud Storage Providers).
Both webserver and executable can be monitored (realtime) by industry standard tooling as for instance ELK ('elastic, logstash, kibana'), using various loglevels as desired.