Notification

Only available in Google Ad Manager 360.

HTTP Live Streaming (HLS)

Live linear stream ad break encoding (HLS)

For a linear broadcast or live feed, your playlist must include "CUE-OUT" and "CUE-IN" points that represent the ad insertion splice points. For example:

#EXT-X-CUE-OUT:DURATION=<time>
#EXT-X-CUE-IN

The EXT-X-CUE-OUT tag represents the splice start point and EXT-X-CUE-IN represents the splice end point. EXT-X-CUE-OUT should be terminated by EXT-X-CUE-IN, indicating the end of the ad break. The ad server replaces the entire section between EXT-X-CUE-OUT and EXT-X-CUE-IN with video ad content.

The DURATION=<time> is required, and is the approximate duration in seconds or floating point of the ad break (in other words, the difference in the time between the EXT-X-CUE-IN and EXT-X-CUE-OUT). Alternately, EXT-X-CUE-OUT:<time> can be substituted for #EXT-X-CUE-OUT:DURATION=<time>.

The duration can be an integer or a floating-point value and should have a value expressed in seconds.
See examples
Example 1

Splice start point and end point

#EXTINF:10,
http://media.example.com/fileSequence7796.ts
#EXTINF:6,
http://media.example.com/fileSequence7797.ts
#EXT-X-CUE-OUT:DURATION=30
#EXTINF:4,
http://media.example.com/fileSequence7798.ts
#EXTINF:10,
http://media.example.com/fileSequence7799.ts
#EXTINF:10,
http://media.example.com/fileSequence7800.ts
#EXTINF:6,
http://media.example.com/fileSequence7801.ts
#EXT-X-CUE-IN
#EXTINF:4,
http://media.example.com/fileSequence7802.ts
#EXTINF:10,
http://media.example.com/fileSequence7803.ts
#EXTINF:3,
http://media.example.com/fileSequence7804.ts

Example 2

Content between OUT and IN is replaced by the DAI ad server with 30 seconds of ad video content

#EXTINF:10,
http://media.example.com/fileSequence7796.ts
#EXTINF:6,
http://media.example.com/fileSequence7797.ts
#EXT-X-CUE-OUT:DURATION=30
#EXTINF:10,
http://ads.example.com/fileSequence0001.ts
#EXTINF:10,
http://ads.example.com/fileSequence0002.ts
#EXTINF:10,
http://ads.example.com/fileSequence0003.ts
#EXT-X-CUE-IN

#EXTINF:4,
http://media.example.com/fileSequence7802.ts
#EXTINF:10,
http://media.example.com/fileSequence7803.ts
#EXTINF:3,
http://media.example.com/fileSequence7804.ts

Shorten an ad break

To end an ad break early, the encoder should send in a "CUE-IN" in the stream to indicate that the DAI streams should immediately end the ad break and begin showing the raw content again.

Note that, if an ad break ends early, the Stream Activity Monitor still reflects the original "Ad break duration", "Filled duration", and "Served duration" values.

Create an additional ad break

While there is no way to make an ad break longer while the ad break is playing to users, an encoder may send an additional a "CUE-OUT" in the stream immediately after the previous ad break's "CUE-IN" to create an additional ad break with freshly decisioned ads.

Fill remaining ad break space

If there are no ads to show or additional space to fill, the user sees either slate content or the underlying content, depending on the ad break settings chosen when the live stream was configured in Ad Manager.

Supported ad markers for live streams

The following markers are supported for ad insertion on live stream content:

CUE-OUT/CUE-IN

These markup types are generated by several encoding solutions, including AWS Elemental.

The format is as follows:

CUE-OUT

#EXT-X-CUE-OUT:DURATION=10.50,K=V

#EXT-X-CUE-OUT:10.50,K=V

Ad Manager currently only supports passing BREAKID as a key-value in the CUE-OUT.

CUE-IN

#EXT-X-CUE-IN

CUE (Adobe Prime Time)

CUE-OUT

#EXT-X-CUE:ID=31264,TYPE="SpliceOut",DURATION=30.00,TIME=77892728.264567

CUE-IN

These markups do not have an explicit CUE-IN indicator. Instead, they mark every segment after the CUE-OUT with the following:

#EXT-X-CUE:ID=31264,TYPE="SpliceOut",DURATION=30.00,TIME=77892728.264567,ELAPSED=5.00

This indicates the placement of a segment inside of an ad break. A CUE-IN marker is calculated using the value of the ELAPSED attribute along with the duration of segment to indicate the last segment of the break.

DATERANGE

CUE-OUT

#EXT-X-DATERANGE:ID="splice-80f",PLANNED-DURATION=90.5,START-DATE="2017-03-24T13:46:04Z",SCTE35-OUT=0xFC301B00000000000000FFF00A05000001027FDF000000

The value of the PLANNED-DURATION attribute is used as the expected ad break duration.

CUE-IN

#EXT-X-DATERANGE:ID="splice-7ef",START-DATE="2017-03-24T13:38:04Z",SCTE35-IN=0xFC301B00000000000000FFF00A05000000FF7F5F0000000000007B7BA160

SCTE35 Binary Splice Insert

SCTE35 Splice In and Out indicators can be specified via time signals in HLS tags. The SCTE information is available in binary format and needs to be decoded in order to determine the type of signal being sent.

CUE-OUT

#EXT-OATCLS-SCTE35:/DAlAAAAAAAAAP/wFAUAAA+if+/+INAJ0P4AKTLgAAAAAAAA9UTkTA==

CUE-IN

#EXT-OATCLS-SCTE35:/DAgAAAAAAAAAP/wDwUAAAPvf0//ahTGjwAAAAAAALda4HI=

SCTE35 Binary Time Signal: Break Start/End

SCTE-35 binary (base64 encoded) data has to be decoded and parsed in order to determine if it contains valid CUE-OUT/CUE-IN, along with any break targeting information.

For example, the following binary data contains a valid CUE-OUT signal:

CUE-OUT

/DAsAAAAAyiYAP/wBQb/PVbrDQAWAhRDVUVJB48zWH//AAEuGvsAACIAAdRJqiI=

Once decoded, the message contains the following fields:

  • splice_command_type set to a value of 6 indicates this is a time signal
  • segmentation_type_id indicates the type of time signal

The following segmentation_type_id value is recognized as a valid CUE-OUT time signal:

34: Break Start

The following segmentation_type_id value (when splice_command_type = 6) is recognized as a valid CUE-IN time signal:

35: Break End

For example, the following binary data contains a valid CUE-IN signal:

CUE-IN

/DAnAAAAAyiYAP/wBQb/PX1ezQARAg9DVUVJB48zWH+/AAAjAAGwzKWt

SCTE35 Binary Time Signal: Provider Ad Start/End

SCTE-35 binary (base64 encoded) data has to be decoded and parsed in order to determine if it contains valid CUE-OUT/CUE-IN, along with any break targeting information.

For example, the following binary data contains a valid CUE-OUT signal:

CUE-OUT

/DAxAAAAAAAAAP/wBQb//ciI8QAbAhlDVUVJXQk9EX/fAAEuK3sBBUMxNDY0MAEBpOBiAg==

Once decoded, the message contains the following fields:

  • splice_command_type set to a value of 6 indicates this is a time signal
  • segmentation_type_id indicates the type of time signal

The following segmentation_type_id value is recognized as a valid CUE-OUT time signal:

48 : Provider Advertisement Start

The following segmentation_type_id value (when splice_command_type = 6) is recognized as a valid CUE-IN time signal:

49 : Provider Advertisement End

For example, the following binary data contains a valid CUE-IN signal:

CUE-IN

/DAsAAAAAAAAAP/wBQb//e78sQAWAhRDVUVJXQk9EX+fAQVDMTQ2NDEBAaKNu/4=

SCTE35 Binary Time Signal: Provider Placement Opportunity

SCTE-35 binary (base64 encoded) data has to be decoded and parsed in order to determine if it contains valid CUE-OUT/CUE-IN, along with any break targeting information.

For example, the following binary data contains a valid CUE-OUT signal:

CUE-OUT

/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==

Once decoded, the message contains the following fields:

  • splice_command_type set to a value of 6 indicates this is a time signal
  • segmentation_type_id indicates the type of time signal

The following segmentation_type_id value is recognized as a valid CUE-OUT time signal:

52 : Provider Placement Opportunity Start

The following segmentation_type_id value (when splice_command_type = 6) is recognized as a valid CUE-IN time signal:

53 : Provider Placement Opportunity End

For example, the following binary data contains a valid CUE-IN signal:

CUE-IN

/DAvAAAAAAAA///wBQb+cuN0EAAZAhdDVUVJSAAAjn+PCAgAAAAALKChijUCALdPwUA=

Macros for SCTE-35 markup

If your feed includes EXT-OATCLS-SCTE35, or EXT-X-DATERANGE markup, the metadata is automatically extracted and made available through custom key-values. You need to set up the custom key-values, and insert them as macros when you generate ad tags.

When you set up the new custom key-values for the SCTE-35 fields, use a custom key (for example, "scte35") and set the value to the macro(s) that correspond to which type of field is available in your feed:

Macro Description
%%SPLICE_INSERT_EVENT_ID%% Unsigned integers in the SCTE35 message, are converted to strings as decimal numbers.
%%SPLICE_INSERT_UPID%%
%%TIME_SIGNAL_EVENT_ID%%
%%TIME_SIGNAL_UPID%% Rendered as lowercase hexadecimal, with no 0x prefix.
%%TIME_SIGNAL_UPID_RAW%% Inserts raw bytes from the SCTE message without hexadecimal conversion (the initial string must be a valid UTF-8 encoded string).
%%AFMM_CBC%% Extracts the commercial break code from the splice info (this is a requirement for the French AF2M specification).
 
For any issues related to DAI troubleshooting or outages, contact publisher support.

Was this helpful?

How can we improve it?
true
Get started with Dynamic Ad Insertion

Our guide to delivering a seamless ad experience across live, linear, and on-demand video content.
See the guide

Search
Clear search
Close search
Google apps
Main menu
12298701087791735953
true
Search Help Center
true
true
true
true
true
148
false
false