search icon
blog banner

Commercial Grade OTT Client Development – An Analysis

Embedded Android OTT OTT Video

December 7, 2014

This technical article describes the essential components and features of a commercial OTT solution. While focusing on OTT Client, it shall also cover the challenges that are involved in designing, implementing and running a full featured client.The Television industry has so far been dominated by providers offering TV in “fixed” mode, where in users had to subscribe to a Cable TV provider (Comcast, ATT) or a Dish TV provider (DISH, DirecTV). In their basic form, these solutions deliver content to a “fixed” place where a subscription is taken (barring some recent possibilities of “place-shifting”). Also in this model, internet and TV are clubbed together as they come from the same vendor.

A commercial OTT solution, on the other hand, offers TV content anywhere and also on multiple devices over regular/public internet. This creates enormous opportunities in the current scenario where internet is widely available and mobile devices (Tablets/Phones) are increasingly being used to watch serious TV. This model provides a more flexible TV watching option to subscribers who are mobile or are not willing to take overheads of a fixed TV service.

OTT Ecosystem

The following figure depicts various components of an OTT System.

various components of an OTT System.

OTT Clients

OTT Clients, the most important part of OTT sub-system, stream video content Servers. Typical commercial grade clients are supported on multiple platforms and devices ranging from TVs, to SetTop Boxes, to handheld devices, to Gaming consoles. These clients also host techniques and algorithms to stream effectively over public internet.


Encoders are other significant part of OTT System which encodes content in format understood by OTT Clients. In most cases encode time and encode quality are two goals that encoders try to balance. Especially in live streams, encode time becomes highly critical.

Encoders also generate certain information about content being encoded (like Audio/Video codecs supported, size hints, encryption information etc). OTT clients make use of this information to correctly decode and decrypt the content being played.


CDNs (Content Data Networks) provide caching services to make data available to OTT clients in an efficient manner. Having CDNs reduces load on Content Servers and helps scale the OTT service.

Content Management

Content Management Servers maintain Schedule and Program information for the content made available to OTT Clients. As a simple example, program schedule for a live channel can be maintained by Content Management Servers. OTT Clients make use of this information to present a program schedule (EPG) to the end user and also determine the Live position of a program while playing Live TV.

User Management

User Management Servers are used for User authorization and can allow or disallow set of services/content based on User Subscriptions.


DRM Servers host key servers which are used by Encoders/OTT Client to encrypt and decrypt the content streams, respectively.


Analytics Servers collect data from OTT Clients that can be used to monitor the quality and performance of service. This data can also be subsequently used to improve the OTT service. Data related to viewership (time spent on various channels etc) can also be used as input for Business intelligence.


  • Configuration Server provides relevant options to customize OTT Clients without having to upgrade software.
  • Location Server provides location data which can be used to allow/disallow certain content on the basis on location. Location data can also be used to overlay advertisements based on location.
  • Time Server provides time synchronization to OTT Clients.

OTT Client Architecture

The following figure depicts various components of an OTT Client.

various components of an OTT Client.

OTT Application

Application part of an OTT Client primarily consists of User Interface and login based User Authentication, and EPG (Electronic programming guide) users can interact with.

User Interface

User Interface part of Application is specific to Device as it needs to use frameworks specific to device to render the UI.  So typically there are different UI versions for various device types like iOS (can be UIKit based), Android (can be Java based), PCs (can be based on Win APIs or plugin) and Set top boxes (can be QT based). The upcoming trend is to use Platform independent technologies like Javascript/HTML5 to develop UIs for OTT Clients but it’s still in nascent stage.

User Authorization

These components are responsible for presenting access to only authorized content to the user as per the subscription.


EPG is an important part of OTT Client as it not only provides a structured access to content to the end user, but it also imposes a time schedule and structure onto an otherwise continuous stream of video being presented by the encoder. This is especially true in case of live channels. As an example ESPN is giving video feed to encoders 24 x 7 and 365 days an year, content itself is hard to interpret and use by end user unless a time schedule is imposed on this ongoing stream. EPG module does this work based on information provided by Content Management Server. So, essentially EPG translates an ongoing stream into discrete shows.

Player Interface

Player provides interface to Application to set various configuration parameters and also indicates key state changes to Application.

Typical interfaces provided by Player:

  • Set user login/logout information
  • Provide Time, Stats, Geo and UMS/CMS host information
  • Provide EPG/Channel data
  • User channel/program selection
  • User video actions start/stop/play/pause/seek/scrub/captions

Typical information indicated by Player to Application

  • Video playback state (stopped/playing/paused/error/stalled)
  • Begin/End of a program
  • Position information
  • Bitrate changes (playback quality)

OTT Player

OTT Player is the core engine responsible for downloading, decrypting and decoding the video content.

Schedule Handler

Schedule Handler is responsible for maintaining and triggering the right video clip to play as per channel, current time (in case of Live) or User selected clip (in case of time shifted content). It instantiates Metadata Handler and Content Downloader to start getting relevant metadata and video stream from Servers. It also maintains the overall player state machine.

This module is also responsible for dynamic ad replacement as marked by Schedule Metadata.

Metadata Handler

Metadata handler is responsible for getting the relevant Channel/Program metadata and Stream Metadata from Servers. In case of Live stream, this metadata needs to be refreshed periodically as stream is dynamically being encoded and made available at the Server.

Channel Metadata has following typical information:

  • Channel time schedule i.e. what program is to be played and when. Typically there is an Anchor time and program schedule given with reference to this anchor time. Anchor time can change at a certain frequency like once or twice a day.
  • Channel Identifier and Title
  • Path to Video Stream and Video Stream Metadata including Load balancing information
  • Type of content – TVoD, Live, free content, SVoD
  • Advertisement Info (path to external Ad providers, Ad breaks)
  • Restrictions (Ad related, Geo, SD/HD, device restrictions)
  • Third party tracking information (for information and measurements partners like Nielsen)

Stream Metadata has following typical information:

  • Content start and end indication (hence length of content). In case of Live stream end time will keep on sliding
  • Type of stream – Live, Timeshifted, VoD
  • Streamlet duration
  • Number of stream profiles (various bitrates available for download)
  • Audio/Video Codec information
  • Encryption Information
  • Network Measurements

This module measures and providers network related information to Content Downloader. Content Downloader relies on this information to make use of best algorithms and download the best possible profile (bitrate) in given network conditions. Typical information provided as part of Network Measurements include: Download Bandwidth estimation, Connect and Request Latency.

Content Downloader

Content Downloader, the most critical part of the Player, determines video playback quality and hence the User Experience. Its Goal is to download the best (highest) possible bitrate video without stalling. If algorithms are too optimistic, there is a chance that video would stall because of lack of content to play in given time. If algorithms are too pessimistic a low bitrate video shall be played hence spoiling the user experience. Hence, fine tuning the Content Downloader is the most challenging part in the Player. It uses information provided by Network Measurements and heuristics to get the best bitrate streamlet at runtime, the technique popularly called Adaptive Streaming.

Content Decryptor

Content Decryptor is responsible for decrypting the downloaded video content and passing to Device Integration layer for rendering. For certain platforms, decryption may be deferred to rendering mechanism like HLS Player on iOS and Samsung. In such cases Content Decryptor passes relevant information like Control World and IV (Initialization Vector) to HLS Player which can be used to decrypt the content before displaying.

Device Abstraction Layer

Device Abstraction Layer (DAL), which typically will be different for different platforms, is responsible for actual rendering of video as per specific platform. Some platforms like iOS and Samsung may play MPEG Transport Stream as it is, while some platforms like Android and PC may need Audio and Video frames separated before being rendered. DAL is responsible for converting downloaded video to format suitable for rendering on target device.

Some popular rendering mechanisms are:

  • HLS Players – iOS and Samsung
  • Open GL – Mac
  • GDI+ – Windows
  • Custom APIs

Video clock which drives the player is typically derived from the renderer, hence DAL is a very time critical module.

Stats Poster

Stats Poster is responsible for reporting various statistics to Analytics Servers. Stats can be used for :

  • Reporting Player quality – This data can be used to find areas of improvement in User Experience
  • Viewership Data – Data about content being watched and popularity of various shows or channels
  • Advertisement Revenue Management – In commercial deployments revenue sharing is a very critical part. Several analytics operators like Nielsen facilitate collection of Ad viewership data and hence Ad revenue sharing.

OTT Client Scenarios


This figure illustrates typical interactions during initialization between OTT Client and Middleware/Backend.

interactions during initialization between OTT Client and Middleware/Backend.


Play On Demand Content

The following figure illustrates typical interactions between OTT Client and Middleware/Backend while playing VoD content.

typical interactions between OTT Client and Middleware/Backend while playing VoD content.

Play Live Content

The following figure illustrates typical interactions between OTT Client and Middleware/Backend while playing VoD content. Basic interactions are same as playing On Demand content, but Channel and Stream information/metadata has to be refreshed periodically as content is encoded on backend in real-time.

OTT Client Challenges

OTT Client Challenges

  • Adaptive Streaming is the biggest technical challenge for an OTT Client because of variations and unpredictability introduced by public internet, wireless interference and signal loss on WiFi and Cellular networks. There are two completing goals of trying to play the best possible resolution video and not stall at the same time. Goal of Adaptive Streaming is to dynamically adjust the video quality being downloaded so that OTT Player never runs out of buffer
  • Live TV is another technical challenge as content is being encoded in real-time. So Channel Metadata, Stream Metadata and Encryption information for the program being played is dynamically being updated at middleware and backend and continuously being refreshed by OTT Client. This creates a synchronization challenge for OTT Client and possible failure.
  • Changing Target Devices and Platforms is a market introduced challenge for OTT. As new devices and OS versions are released, OTT Clients have to be updated to remain compatible and performant on new platforms. This is where having a platform abstraction layer, of platform independent implementations (like HTML5 based player) or using standard solutions (like RDK maybe helpful.


We will get back to you!
We will get back to you!

More Blogs


Enquire Now

We will treat any information you submit with us as confidential

arrow back top