使用会话变量 - AWS Elemental MediaTailor

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用会话变量

要配置 AWS Elemental MediaTailor 要将会话数据发送到广告决策服务器 (ADS),请在模板ADSURL中指定本节列出的一个或多个变量。您可以使用单个变量,也可以连接多个变量以创建单个值。 MediaTailor 生成一些值,然后从清单和玩家的会话初始化请求等来源获取其余值。

下表描述了可在模板ADS请求URL配置中使用的会话数据变量。表中列出的章节编号对应于2019年a版的有线电信工程师协会 (SCTE) -35规范《有线电视数字节目插入提示信息》,有关广告预取的详细信息,请参阅。预取广告

名称 可用于广告预取 SCTE-35 规格部分 Description
[avail.index] 一个数字,表示广告在索引中的位置。在播放会话开始时, MediaTailor 创建清单中所有可用广告的索引,并存储会话剩余部分的索引。当 MediaTailor 向请求填补空缺时,它会包括广告可用的索引号。ADS此参数使能够使用竞争排除和频次上限等功能来改善广告选择。ADS
[avail.random] 一个介于 0 到 10,000,000,000,000 之间的随机数,作为长数,为每次向的请求 MediaTailor 生成。ADS某些广告服务器使用此参数来实现将广告与竞争对手公司的广告进行隔离等功能。
[scte.archive_allowed_flag] 10.3.3.1 一个可选的布尔值。当此值为 0 时,将对该片段施加录制限制。当此值为 1 时,不对片段施加录制限制。
[scte.avail_num] 9.7.2.1 MediaTailor 从 SCTE -35 字段中解析的值avail_num,为一个长数字。 MediaTailor 可以使用此值来指定线性广告可用数量。
[scte.avails_expected] 9,7.2.1 一个可选的长整值,它给出当前事件中预期的可用次数。
[scte.delivery_not_restricted_flag] 10.3.3.1 一个可选的布尔值。当此值为 0 时,将保留接下来的五位。当此值为 1 时,接下来的五位具有 SCTE -35规范中描述的含义。
[scte.device_restrictions] 10.3.3.1 一个可选的整数值,表示三个预定义的、独立的和非分层的设备组。有关此变量的更多信息,请参阅 -35 规范中的 segments_ expected 描述。SCTE
[scte.event_id]
9.1 和 9.7.2.1 MediaTailor 从 SCTE -35 字段中解析的值splice_event_id,为一个长数字。 MediaTailor 使用此值来指定线性广告可用数或填充广告服务器查询字符串,例如广告栏位置。
[scte.no_regional_blackout_flag] 10.3.3.1 一个可选的布尔值。当此值为 0 时,区域封锁限制适用于该分段。当此值为 1 时,区域封锁限制不适用于该区段。
[scte.segment_num] 10.3.3.1 一个可选的整数值,用于对分段集合中的区段进行编号。有关此变量的更多信息,请参阅 -35 规范中的 s egment_num 描述。SCTE
[scte.segmentation_event_id] 10.3.3.1 MediaTailor 将此变量公开为。scte.event_id
[scte.segmentation_type_id] 10.3.3.1 一个可选的 8 位整数值,用于指定分段类型。有关此变量的更多信息,请参阅 -35 规范中的 s egmentation_type_id 描述。SCTE
[scte.segmentation_upid]

segmentation_upid_type:是

private_data:是

segmentation_upid:10.3.3.1

私有托管UPID:10.3.3.3

对应于 SCTE -35 segmentation_upid 元素。该segmentation_upid元素包含segmentation_upid_typesegmentation_upid_length

MediaTailor 支持以下segmentation_upid类型:

  • ADS信息 (0x0e)-广告信息。有关更多信息,请参阅 -35 规范中的 s egmentation_upid 描述。SCTE

  • 托管私有 UPID (0x0C)--35 规范中定义的托管私有 UPID (MPU) 结构。SCTE MediaTailor 支持二进制或DASHXMLSCTE表示形式。

    你可以在 podbuster 工作流程中使用这种结构。为此,请指定 32 位(4 字节)format_identifier,并在private_data属性中包含以下参数:

    ABCD{"assetId":"my_program","cueData":{"cueType":"theAdType","key":"pb","value":"123456"}}

    MediaTailor 解析前面的值JSON,并将它们传递到scte.segmentation_upid.assetIdscte.segmentation_upid.cueData.key、和scte.segmentation_upid.cueData.value动态变量中。

  • 用户定义 (0x01)-用户定义的结构。有关更多信息,请参阅 -35 规范中的 s egmentation_upid 描述。SCTE

[scte.segmentation_upid.assetId] 与托管私有 UPID (0xC) 配合使用,segmentation_ upid_type用于播客工作流程。 MediaTailor从的private_dataJSON结构中的assetId参数中派生此值。MPU有关更多信息,请参阅 Managed Private UPID JSON structure for a podbuster workflow
[scte.segmentation_upid.cueData.key] 与托管私有 UPID (0xC) 配合使用,segmentation_ upid_type用于播客工作流程。 MediaTailor从的private_dataJSON结构中的cueData.key参数中派生此值。MPU有关更多信息,请参阅 Managed Private UPID JSON structure for a podbuster workflow
[scte.segmentation_upid.cueData.value] 与托管私有 UPID (0xC) 配合使用,segmentation_ upid_type用于播客工作流程。 MediaTailor从的private_dataJSON结构中的cueData.key参数中派生此值。MPU有关更多信息,请参阅 Managed Private UPID JSON structure for a podbuster workflow
[scte.segments_expected] 10.3.3.1 一个可选的整数值,它给出区段集合中各个分段的预期数量。有关此变量的更多信息,请参阅 -35 规范中的 segments_ expected 描述。SCTE
[scte.sub_segment_num] 10.3.3.1 一个可选的整数值,用于标识子分段集合中的特定子分段。有关此变量的更多信息,请参阅 -35 规范中的 sub_segment_num 描述。SCTE
[scte.sub_segments_expected] 10.3.3.1 一个可选的整数值,它给出子分段集合中各个子分段的预期数量。有关此变量的更多信息,请参阅 -35 规范中的 sub_segments_expected 描述。SCTE
[scte.unique_program_id] 9.7.2.1 MediaTailor 从 SCTE -35 splice_insert 字段中解析的整数值。unique_program_idADS使用唯一的节目 ID (UPID) 为线性直播提供节目级广告定位。如果 SCTE -35 命令不是拼接插入,则将其 MediaTailor 设置为空值。
[session.avail_duration_ms]

广告投放时段的持续时间(以毫秒为单位)。默认值为 300,000 毫秒。 AWS Elemental MediaTailor 从输入清单中获取持续时间值,如下所示:

  • F MediaTailor orHLS:从#EXT-X-DATERANGE标签中的值#EXT-X-CUE-OUT: DURATION或中获取持续时间。如果输入清单在这些标签中的广告有效期为空、无效或为零,则 MediaTailor 使用默认值。

  • F MediaTailor o DASH r:如果指定了事件持续时间,则从事件持续时间中获取持续时间值。否则,它将使用默认值。

  • 对于VOD:当VOD直播触发片前广告调用时,如果清单中不包含带有持续时间值的SCTE消息,则 MediaTailor 不会输入 [session.avail_duration_ms] 的持续时间,包括默认的时长值。

[session.avail_duration_secs] 以秒为单位的广告投放时段或广告可用性,四舍五入到最接近的秒数。 MediaTailor 确定此值的方式与其确定的方式相同[session.avail_duration_ms]
[session.client_ip] MediaTailor 请求来自的远程 IP 地址。如果设置了X-forwarded-for标题,则该值将 MediaTailor 用于client_ip
[session.id] 当前播放会话的唯一数字标识符。玩家对会话发出的所有请求都具有相同的 ID,因此它可以用于用于关联单次观看请求的ADS字段。
[session.referer] 通常是托管视频播放器的页面的。URL MediaTailor 将此变量设置为玩家在其请求中使用的Referer标头的值 MediaTailor。如果玩家没有提供此标题,则 MediaTailor留[session.referer]空。如果您在清单端点前使用内容分发网络 (CDN) 或代理,并且想要显示此变量,请在此处代理来自播放器的正确标头。
[session.user_agent] 从玩家的会话初始化请求中 MediaTailor 收到的User-Agent标头。如果您在清单端点前面使用CDN或代理,则必须在此处代理来自播放器的正确标头。
[session.uuid]

的替代方案[session.id]。这是当前播放会话的唯一标识符,如下所示:

e039fd39-09f0-46b2-aca9-9871cc116cde

如果ADS需要将名为的查询参数deviceSession与唯一会话标识符一起传递,则模板ADSURL在 AWS Elemental MediaTailor 可能如下所示:

https://my.ads.server.com/path?deviceSession=[session.id]

AWS Elemental MediaTailor 自动为每个直播生成一个唯一的标识符,然后输入该标识符来代替session.id。如果标识符是1234567,则向 MediaTailor 发出的最终请求ADS将如下所示:

https://my.ads.server.com/path?deviceSession=1234567

如果ADS需要传递多个查询参数,则模板ADSURL在 AWS Elemental MediaTailor 可能如下所示:

https://my.ads.server.com/sample?e=[scte.avails_expected]&f=[scte.segment_num]&g=[scte.segments_expected]&h=[scte.sub_segment_num]&j=[scte.sub_segments_expected]&k=[scte.segmentation_type_id]

以下DASH标记示例XML片段显示了如何使用scte35:SpliceInsert

<Period start="PT444806.040S" id="123456" duration="PT15.000S"> <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml"> <Event duration="1350000"> <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="180832" tier="4095"> <scte35:SpliceInsert spliceEventId="1234567890" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1"> <scte35:Program><scte35:SpliceTime ptsTime="5672624400"/></scte35:Program> <scte35:BreakDuration autoReturn="true" duration="1350000"/> </scte35:SpliceInsert> </scte35:SpliceInfoSection>

以下DASH标记示例XML片段显示了如何使用scte35:TimeSignal

<Period start="PT346530.250S" id="123456" duration="PT61.561S"> <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml"> <Event duration="5310000"> <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="183003" tier="4095"> <scte35:TimeSignal> <scte35:SpliceTime ptsTime="3442857000"/> </scte35:TimeSignal> <scte35:SegmentationDescriptor segmentationEventId="1234567" segmentationEventCancelIndicator="false" segmentationDuration="8100000" segmentationTypeId="52" segmentNum="0" segmentsExpected="0"> <scte35:DeliveryRestrictions webDeliveryAllowedFlag="false" noRegionalBlackoutFlag="false" archiveAllowedFlag="false" deviceRestrictions="3"/> <scte35:SegmentationUpid segmentationUpidType="12" segmentationUpidLength="2">0100</scte35:SegmentationUpid> </scte35:SegmentationDescriptor> </scte35:SpliceInfoSection> </Event>

以下DASH标记示例XML片段显示了如何使用scte35:Binary

<Period start="PT444806.040S" id="123456" duration="PT15.000S"> <EventStream schemeIdUri="urn:scte:scte35:2014:xml+bin" timescale="1"> <Event presentationTime="1541436240" duration="24" id="29"> <scte35:Signal xmlns="http://www.scte.org/schemas/35/2016"> <scte35:Binary>/DAhAAAAAAAAAP/wEAUAAAHAf+9/fgAg9YDAAAAAAAA25aoh</Binary> </scte35:Signal> </Event> <Event presentationTime="1541436360" duration="24" id="30"> <scte35:Signal xmlns="http://www.scte.org/schemas/35/2016"> <scte35:Binary>QW5vdGhlciB0ZXN0IHN0cmluZyBmb3IgZW5jb2RpbmcgdG8gQmFzZTY0IGVuY29kZWQgYmluYXJ5Lg==</Binary> </scte35:Signal> </Event>

以下HLS标签示例显示了如何使用EXT-X-DATERANGE

#EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2014-03-05T11: 15:00Z",PLANNED-DURATION=59.993,SCTE35-OUT=0xFC002F0000000000FF0 00014056FFFFFF000E011622DCAFF000052636200000000000A0008029896F50 000008700000000

以下HLS标签示例显示了如何使用EXT-X-CUE-OUT

#EXT-OATCLS-SCTE35:/DA0AAAAAAAAAAAABQb+ADAQ6QAeAhxDVUVJQAAAO3/PAAEUrEoICAAAAAAg+2UBNAAANvrtoQ== #EXT-X-ASSET:CAID=0x0000000020FB6501 #EXT-X-CUE-OUT:201.467

以下HLS标签示例显示了如何使用EXT-X-SPLICEPOINT-SCTE35

#EXT-X-SPLICEPOINT-SCTE35:/DA9AAAAAAAAAP/wBQb+uYbZqwAnAiVDVUVJAAAKqX//AAEjW4AMEU1EU05CMDAxMTMyMjE5M19ONAAAmXz5JA==

以下示例显示了如何使用scte35:Binary解码:

{ "table_id": 252, "section_syntax_indicator": false, "private_indicator": false, "section_length": 33, "protocol_version": 0, "encrypted_packet": false, "encryption_algorithm": 0, "pts_adjustment": 0, "cw_index": 0, "tier": "0xFFF", "splice_command_length": 16, "splice_command_type": 5, "splice_command": { "splice_event_id": 448, "splice_event_cancel_indicator": false, "out_of_network_indicator": true, "program_splice_flag": true, "duration_flag": true, "splice_immediate_flag": false, "utc_splice_time": { "time_specified_flag": false, "pts_time": null }, "component_count": 0, "components": null, "break_duration": { "auto_return": false, "duration": { "pts_time": 2160000, "wall_clock_seconds": 24.0, "wall_clock_time": "00:00:24:00000" } }, "unique_program_id": 49152, "avail_num": 0, "avails_expected": 0 "segment_num": 0, "segments_expected": 0, "sub_segment_num": 0, "sub_segments_expected": 0 }, "splice_descriptor_loop_length": 0, "splice_descriptors": null, "Scte35Exception": { "parse_status": "SCTE-35 cue parsing completed with 0 errors.", "error_messages": [], "table_id": 252, "splice_command_type": 5 } }