对于线性广播或直播 Feed,您的播放列表必须包含代表广告插播接合点的“CUE-OUT”和“CUE-IN”广告插入点。例如:
#EXT-X-CUE-OUT:DURATION=<time>
#EXT-X-CUE-IN
EXT-X-CUE-OUT
标记表示接合起始点,EXT-X-CUE-IN
标记表示接合结束点。EXT-X-CUE-OUT
应通过 EXT-X-CUE-IN
(表示广告插播结束)终止。广告服务器会将 EXT-X-CUE-OUT
和 EXT-X-CUE-IN
之间的整个部分替换为相应的视频广告内容。
DURATION=<time>
是必需的,它可以是广告插播时段的大约时长(以秒为单位),也可以是浮点值(相当于 EXT-X-CUE-IN
和 EXT-X-CUE-OUT
之间的时间间隔)。或者,您可以将 EXT-X-CUE-OUT:<time>
替换成 #EXT-X-CUE-OUT:DURATION=<time>
。
接合起始点和结束点
#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
DAI 广告服务器将 OUT
和 IN
之间的内容替换为 30 秒的广告视频内容
#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
缩短广告插播时长
要提前结束广告插播,编码器应在视频流的“CUE-IN”中发送,以指明 DAI 视频流应立即结束广告插播,并再次开始显示原始内容。
请注意,如果某个广告插播时间点提前结束,视频流活动监控工具仍会反映原始的“广告插播时长”“填充了广告的广告插播时长”和“投放了广告的广告插播时长”值。
再创建一个广告插播时间点
如果正在插播广告,则无法延长相应的广告插播时段,但编码器可以会向相应视频流中上一个广告插播时间点的“CUE-IN”后面发送另一个“CUE-OUT”,以另行创建一个广告插播时间点来播放刚刚决定添加的广告。
填满剩余的广告插播空间
如果没有要展示的广告,也没有可供填充的额外空间,用户会看到可选广告内容或基础内容,具体取决于在 Ad Manager 中配置直播时选择的广告插播设置。
直播支持的广告标记
直播内容中的广告插播支持以下标记:
这些标记类型由多种编码解决方案(包括 AWS Elemental)生成。
其格式如下所示:
CUE-OUT
#EXT-X-CUE-OUT:DURATION=10.50,K=V
#EXT-X-CUE-OUT:10.50,K=V
目前,Ad Manager 仅支持在 CUE-OUT 中以键值对的形式传递 BREAKID
。
CUE-IN
#EXT-X-CUE-IN
CUE-OUT
#EXT-X-CUE:ID=31264,TYPE="SpliceOut",DURATION=30.00,TIME=77892728.264567
CUE-IN
这些标记没有明确的 CUE-IN
指标。它们会按以下格式标记 CUE-OUT
后面的每个片段:
#EXT-X-CUE:ID=31264,TYPE="SpliceOut",DURATION=30.00,TIME=77892728.264567,ELAPSED=5.00
这会指明某个片段在广告插播时间点内的位置。CUE-IN
标记是使用 ELAPSED
属性的值和片段时长计算得出的,用以指明插播时间点的最后一个片段。
CUE-OUT
#EXT-X-DATERANGE:ID="splice-80f",PLANNED-DURATION=90.5,START-DATE="2017-03-24T13:46:04Z",SCTE35-OUT=0xFC301B00000000000000FFF00A05000001027FDF000000
PLANNED-DURATION
属性的值用作预期的广告插播时长。
CUE-IN
#EXT-X-DATERANGE:ID="splice-7ef",START-DATE="2017-03-24T13:38:04Z",SCTE35-IN=0xFC301B00000000000000FFF00A05000000FF7F5F0000000000007B7BA160
可以通过时间信号在 HLS 标记中指定 SCTE35 Splice In 和 Splice Out 指标。SCTE 信息以二进制格式提供,需要进行解码才能确定发送的信号类型。
CUE-OUT
#EXT-OATCLS-SCTE35:/DAlAAAAAAAAAP/wFAUAAA+if+/+INAJ0P4AKTLgAAAAAAAA9UTkTA==
CUE-IN
#EXT-OATCLS-SCTE35:/DAgAAAAAAAAAP/wDwUAAAPvf0//ahTGjwAAAAAAALda4HI=
必须对 SCTE-35 二进制(采用 base64 编码)数据进行解码和解析,以便确定该数据是否包含有效的 CUE-OUT/CUE-IN 以及所有插播时间点定位信息。
例如,以下二进制数据包含有效的 CUE-OUT 信号:
CUE-OUT
/DAsAAAAAyiYAP/wBQb/PVbrDQAWAhRDVUVJB48zWH//AAEuGvsAACIAAdRJqiI=
解码后的消息包含以下字段:
splice_command_type
,此字段的值设为 6,用于指明这是时间信号segmentation_type_id
,用于指明时间信号的类型
以下 segmentation_type_id
值被识别为有效的 CUE-OUT 时间信号:
34
:广告插播开始
以下 segmentation_type_id
值(当 splice_command_type = 6
时)被识别为有效的 CUE-IN 时间信号:
35
:广告插播结束
例如,以下二进制数据包含有效的 CUE-IN 信号:
CUE-IN
/DAnAAAAAyiYAP/wBQb/PX1ezQARAg9DVUVJB48zWH+/AAAjAAGwzKWt
必须对 SCTE-35 二进制(采用 base64 编码)数据进行解码和解析,以便确定该数据是否包含有效的 CUE-OUT/CUE-IN 以及所有插播时间点定位信息。
例如,以下二进制数据包含有效的 CUE-OUT 信号:
CUE-OUT
/DAxAAAAAAAAAP/wBQb//ciI8QAbAhlDVUVJXQk9EX/fAAEuK3sBBUMxNDY0MAEBpOBiAg==
解码后的消息包含以下字段:
splice_command_type
,此字段的值设为 6,用于指明这是时间信号segmentation_type_id
,用于指明时间信号的类型
以下 segmentation_type_id
值被识别为有效的 CUE-OUT 时间信号:
48
:提供商广告开始
以下 segmentation_type_id
值(当 splice_command_type = 6
时)被识别为有效的 CUE-IN 时间信号:
49
:提供商广告结束
例如,以下二进制数据包含有效的 CUE-IN 信号:
CUE-IN
/DAsAAAAAAAAAP/wBQb//e78sQAWAhRDVUVJXQk9EX+fAQVDMTQ2NDEBAaKNu/4=
必须对 SCTE-35 二进制(采用 base64 编码)数据进行解码和解析,以便确定该数据是否包含有效的 CUE-OUT/CUE-IN 以及所有插播时间点定位信息。
例如,以下二进制数据包含有效的 CUE-OUT 信号:
CUE-OUT
/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==
解码后的消息包含以下字段:
splice_command_type
,此字段的值设为 6,用于指明这是时间信号segmentation_type_id
,用于指明时间信号的类型
以下 segmentation_type_id
值被识别为有效的 CUE-OUT 时间信号:
52
:提供商广告投放机会开始
以下 segmentation_type_id
值(当 splice_command_type = 6
时)被识别为有效的 CUE-IN 时间信号:
53
:提供商广告投放机会结束
例如,以下二进制数据包含有效的 CUE-IN 信号:
CUE-IN
/DAvAAAAAAAA///wBQb+cuN0EAAZAhdDVUVJSAAAjn+PCAgAAAAALKChijUCALdPwUA=
SCTE-35 标记的宏
如果您的 Feed 包含 EXT-OATCLS-SCTE35
或 EXT-X-DATERANGE
标记,则系统会自动提取元数据并通过自定义键值对提供元数据。您需要设置自定义键值对,并在生成广告代码时将其作为宏插入。
为 SCTE-35 字段设置新的自定义键值时,应使用自定义键(例如“scte35”),并将值设置为与 Feed 中的字段类型对应的宏:
宏 | 说明 |
---|---|
%%SPLICE_INSERT_EVENT_ID%% |
SCTE35 消息中的无符号整数将作为十进制数字转换为字符串。 |
%%SPLICE_INSERT_UPID%% |
|
%%TIME_SIGNAL_EVENT_ID%% |
|
%%TIME_SIGNAL_UPID%% |
以小写十六进制字母的形式呈现,且没有 0x 前缀。 |
%%TIME_SIGNAL_UPID_RAW%% |
会原样插入 SCTE 消息所含原始字节,而不会进行十六进制转换(初始字符串必须是有效的 UTF-8 编码字符串) |
%%AFMM_CBC%% |
会从接合信息中提取商业广告插播时间点代码(这是法国 AF2M 规范的一项要求)。 |