Live Encoding with is a cloud-based SaaS video API service from Broadpeak that offers a range of services including Server Side Ad Insertion (SSAI). To work with Bitmovin Live Encoding the following HlsManifestAdMarkerType should be enabled: EXT_X_DATERANGE.


You will require your own account. You can sign up for a trial account at

Ensure you're familiar with Live Encoding settings match the requirements in Live Encoding with HLS, SCTE-35 and SSAI

How to Setup

  1. Start a Bitmovin Live Encoder

    1. e.g.: use this Java API code example as the basis Live Encoding with HLS, SCTE-35 and SSAI modifying it with the following changes:
      1. Change the HlsManifestAdMarkerType to EXT_X_DATERANGE
      2. Optionally, adjust the video ladders (codec specs and muxing type) to match the default transcoding profile in
    2. HLS compatibility
      1. HLS version 4 or lower. Higher versions may still work in some limited cases.
      2. Contains a single audio group
      3. Contains at most one subtitle group
      4. TS Media containers (recently added Cmaf/MP4 support)
      5. EXT-X-STREAM-INF tags have the "BANDWIDTH" and "CODECS" attributes
      6. EXT-X-PROGRAM-DATE-TIME tag must be present in media manifests
      7. An Initialization Vector (IV) is present if your content uses AES-128 Encryption
      8. EXT-X-DATERANGE and/or EXT-OATCLS-SCTE35 tags enabled
  2. Start your Live ingest stream

    1. e.g.: Use the example method from the “Sample ingest with a demo file” section in Live Encoding with HLS, SCTE-35 and SSAI
  3. Setup a configuration



    The following changes will only be possible when the live stream is already running, otherwise the Source resource cannot be created.
    Additionally, unless specified, pre-configured sample resources will be used, eg. for the ad server

    1. Create a Live stream input source:

      1. Go to Sources

      2. Click Create New

      3. Type: Live, Name: Any, URL: URL to your live stream’s master manifest

      4. Create a new ad insertion service:

        1. Go to Services
        2. Click Create New
          1. Type: Ad insertion, Name: Any, Content: the previously created live source → next
          2. Type: Ad replacement → add server: dummy ad server → next → run
          3. Add ad transcoding if required with the default profile, and a gap filler slate
          4. ⚠️ The transcoding profile may or may not work for your content. Get in touch with support to check on that
          5. ⚠️ For every different Muxing, number of A/V channels, renditions etc. you need a dedicated profile. Only the team are able to create it
  4. Initiate SCTE markers in the upstream contribution platform from the Bitmovin Live Encoder

    1. ⚠️ does not support multiple triggers on the same segment, if the break durations of those triggers do not align.
    2. ⚠️ When you first try playback of the service URL, you may not see your ad breaks replaced with new ads; it may take a little while for the ads to be transcoded by before they can be inserted in your stream. This is usually done within a few minutes - depending on the number and size of the ads
  5. If everything is configured correctly the output should look like:

Resources documentation