InStream ads

InStream is an ad format that lets you monetize your app by serving ads while video content is playing.

An InStream ad consists of a scenario with multiple video blocks. The type of video unit in an InStream scenario determines how the video ad should be played relative to the main video content.

About InStream

To set up an InStream scenario, create a video resource in the Partner interface. Once created, the video resource is assigned a unique identifier (Page ID). This ID should be used in the Mobile Ads SDK.

To increase ad revenue, you can set up playing multiple ads within a single ad placement: an AdPod. You can set up the AdPod for an ad placement in the Partner interface.

Types of video units supported by the Mobile Ads SDK:

  • Pre-roll — A video ad is played before the main content.
  • Mid-roll — A video ad is played at a certain time within the main content.
  • Post-roll — A video ad is played after the main content.
  • Pause-roll — A video ad is played when the user clicks the pause button.
  • In-roll — A video ad is played anywhere in the video when a certain point is reached.

API for working with InStream ads

There are multiple APIs for working with InStream ads:

ExoPlayer AdsLoader API

An API for basic integration of InStream ads into ExoPlayer. It lets you quickly integrate the display of InStream ads. The API supports Pre-roll, Mid-roll, and Post-roll ad breaks.


  1. A specific version of ExoPlayer is required.
  2. It doesn't support In-roll and Pause-roll.

InStream API

An API for advanced integration of InStream ads. It lets you support playing any type of ad break and use your own implementation of a player. InStream ads consist of video ads that are played automatically and manually.

Pre-roll, Mid-roll, and Post-roll ad breaks are played automatically using the InstreamAdBinder API. To play In-roll and Pause-roll ad breaks manually, use the In-roll API and Pause-roll API, respectively.


You can also use the InstreamAdBinder API, In-roll API, and Pause-roll API concurrently if you:

  1. Use different instances of the ad player.
  2. Don't start the Pause-roll and In-roll APIs for playing ads if the main video was paused using the InStreamAdBinder API.