Video Content Ingestion – 4 Steps to Delivering the Best Viewing Experience

When we started planning our Cloud TV Platform we decided to prepare the video content ingestion for different devices and resolutions and store ready content on CDNs, rather than using on-demand content preparation solutions, such as Wowza. This decision was based on three basic assumptions:

- Storage costs less then CPU power. This is especially true when the number of your users is high
- Using a Wowza-like solution will either force us to become a CDN or limit the amount of CDNs we can use
- Wowza (specifically) will limit us in choosing a DRM system

At our current stage all assumptions proved themselves as correct for our environment and customers. At this time, for each incoming HD movie we output 16 different formats, bitrates and resolutions. In order to deliver video to multiple screens we need to handle many output formats and resolutions. The necessity of using adaptive bitrate streaming technology to deliver the video in an OTT environment is clear to everyone today. But which technology should we choose? Here is a (somewhat simplified) outline of our decision-making process.

1. Isolating and quantifying key decision-making factors

Our first step was quantifying the following decision-making factors:

- OS of the client device
- Client application
- DRM choice
- DRM license price per client
- STB vendor DRM support and certification
- Setup cost of DRM system
- Customer’s requirements and constrains

2. Choosing to support multiple DRM technologies 

After evaluating the parameters in the above list we realized we needed to output:

- HLS with Verimatrix DRM encryption for STB
- HDS with Flash Access DRM encryption for WEB
- Video in WideVine SMIL format for tablets and mobile (both Android and iOS)
- Video in encrypted MP4 (Widevine) for Android 2.x phones

Of course, everything should be outputted with adaptive bitrates (except for content for the legacy Android phones)

3. Choosing bitrates, resolutions and number of streams for adaptive bitrate for each device

We considered the following factors:

- Device capability to change resolution dynamically
- Is the DRM on this device at a sufficient security level for streaming of HD content?
- The price of CDN storage vs. price of CDN streaming

4. Defining bitrate /resolution ratio

We considered what would be small enough jumps between bitrates to create a smooth adaptive experience but big enough to minimize storage size. Currently we use the following bitrate /resolution matrices:

For input HD 16:9 movie

Bitrate / Resolution Matrix for Input HD 16:9 Movie

For input HD 4:3 movie

Bitrate / Resolution Matrix for Input HD 4:3 Movie

For input HD 21:9 movie

Bitrate / Resolution Matrix for Input HD 21:9 Movie