Dynamic Manifests

If you are using Microsoft Azure Media Services to store uploaded assets, you can use a predefined filter to generate a customized, dynamic manifest for transcoding. Filters are server-side rules that are most commonly used to specify a subset of audio and video renditions to provide the best viewing experience on a given device. For example, you can set up a filter to request that when an asset is transcoded, only HD and SD renditions are created.

A dynamic manifest is created when a viewer requests to stream a video that has a filter associated with it. This is in comparison to other types of Ooyala manifest files, which are uploaded along with the assets and remain the same for all viewing requests (see CSV Manifest File or XML Manifest File). An asset can have both a static manifest file and a dynamic manifest filter.

Dynamic manifests are useful when you need more flexibility than what can be defined in the asset’s default manifest file. With a dynamic manifest, you can:

  • Better control the customer viewing experience on various device types
  • Reduce CDN usage

Setting Up Dynamic Manifests

To enable dynamic manifests, contact your Ooyala support representative and provide the desired filter criteria. The Ooyala team configures the filter for your account and sends you the name of the filter.

You can specify the desired output in terms of:

  • Bitrate (single bitrate or range of bitrates)
  • Bitrate for audio stream only
  • Bitrate for video stream only

Using Filters

To put a filter into effect, include the filter name when you embed the Ooyala Player on a web page or when you make an iOS SDK or Android SDK call to display video in a mobile app.

Example: Web Player

var playerParam = {"dynamicFilters": "filterA,filterB,filterC"};
OO.Player.Create(DIV, embed_code, playerParam);

Example: Android SDK

List<String> dynamicFilters = Arrays.asList("filterA", "filterB", "filterC");
Options options = new Options.Builder().setDynamicFilters(dynamicFilters).build();
player = new OoyalaPlayer(pcode, new PlayerDomain(domain), null, options);

Example: iOS SDK with Swift

let options: OOOptions = OOOptions()!
options.dynamicFilters = ["filterA", " filterB", "filterC ", " filterD "]
player = OOOoyalaPlayer(pcode: pcode, domain: domain, embedTokenGenerator: nil, options: options)! 

Example: iOS SDK with Objective-C

OOOptions *options = [OOOptions new];
options.dynamicFilters = [[NSArray alloc]
OOOoyalaPlayer *ooyalaPlayer = [[OOOoyalaPlayer alloc] 
initWithPcode:self.pcode domain:[[OOPlayerDomain alloc] 
initWithString:self.playerDomain] options:options];


You can include multiple filters on a single asset, up to a maximum of three (3) filters per asset.

Error Handling

If the filter name in the embed parameter or SDK call does not match any defined filter (for example, in case of a typographical error in your code), the filter is not applied and the video transcodes normally as if no filter had been requested.