

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

# MediaTailor ADS 请求的会话变量
<a name="variables-session"></a>

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

下表描述了可在模板 ADS 请求网址配置中使用的会话数据变量。表中列出的章节编号对应于有线电信工程师协会 (SCTE) -35 规范《[数字节目插入提示信息](https://account.scte.org/standards/library/catalog/scte-35-digital-program-insertion-cueing-message/)》的2019a版本。有关广告预取的详细信息，请参阅。[预取广告](prefetching-ads.md)


| Name | 可用于广告预取 | SCTE-35 规格部分 | Description | 
| --- | --- | --- | --- | 
| [avail.index] | 是 |  | 一个数字，表示广告在索引中的位置。在播放会话开始时， MediaTailor 创建清单中所有可用广告的索引，并存储会话剩余部分的索引。当向ADS MediaTailor 提出填补空缺的请求时，它会包括广告可用的索引号。此参数使 ADS 能够通过使用竞争排除和频次上限等功能来改进广告选择。 | 
| [avail.random] | 是 |  | 一个介于 0 到 10,000,000,000 之间的随机数，作为长数，为每次向 ADS 的请求 MediaTailor 生成。某些广告服务器使用此参数来实现将广告与竞争对手公司的广告进行隔离等功能。 | 
| [scte.archive\$1allowed\$1flag] | 是 | 10.3.3.1 | 一个可选的布尔值。当此值为 0 时，将对该片段施加录制限制。当此值为 1 时，不对片段施加录制限制。 | 
| [scte.avail\$1num] | 是 | 9.7.2.1 |  MediaTailor 从 SCTE-35 字段中解析的值avail\$1num，为长数字。 MediaTailor 可以使用此值来指定线性广告可用数量。值必须为整数。 | 
| [scte.avails\$1expected] | 是 | 9,7.2.1 | 一个可选的长整值，它给出当前事件中预期的可用次数。 | 
| [scte.delivery\$1not\$1restricted\$1flag] | 是 | 10.3.3.1 | 一个可选的布尔值。当此值为 0 时，将保留接下来的五位。当此值为 1 时，接下来的五位将采用 SCTE-35 规范中描述的含义。 | 
| [scte.device\$1restrictions] | 是 | 10.3.3.1 | 一个可选的整数值，表示三个预定义的、独立的和非分层的设备组。有关此变量的更多信息，请参阅 SCTE-35 规范中的 segments\$1 expected 描述。 | 
| [scte.event\$1id] | 是 | 9.1 和 9.7.2.1 |  MediaTailor 从 SCTE-35 字段中解析的值splice\$1event\$1id，为长数字。 MediaTailor 使用此值来指定线性广告可用数或填充广告服务器查询字符串，例如广告栏位置。值必须为整数。 | 
| [scte.no\$1regional\$1blackout\$1flag] | 是 | 10.3.3.1 | 一个可选的布尔值。当此值为 0 时，区域封锁限制适用于该分段。当此值为 1 时，区域封锁限制不适用于该区段。 | 
| [scte.segment\$1num] | 是 | 10.3.3.1 | 一个可选的整数值，用于对分段集合中的区段进行编号。有关此变量的更多信息，请参阅 SCTE-35 规范中的 s egment\$1num 描述。 | 
| [scte.segmentation\$1event\$1id]  | 是 | 10.3.3.1 | MediaTailor 将此变量公开为。[scte.event_id](#scte.event_id) | 
| [scte.segmentation\$1type\$1id] | 是 | 10.3.3.1 | 一个可选的 8 位整数值，用于指定分段类型。有关此变量的更多信息，请参阅 SCTE-35 规范中的 s egmentation\$1type\$1id 描述。 | 
| [scte.segmentation\$1upid] |  `segmentation_upid_type`：是 `private_data`：是  |  **segmentation\$1upid：10.3.3.1** 托管私有 UPID：10.3.3.3  |  对应于 SCTE-35 `segmentation_upid` 元素。该`segmentation_upid`元素包含`segmentation_upid_type`和`segmentation_upid_length`。 MediaTailor 支持以下`segmentation_upid`类型： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/mediatailor/latest/ug/variables-session.html)  | 
| [scte.segmentation\$1upid.assetId] | 是 |  | 与托管私有 UPID (0xC) 配合使用，segmentation\$1 upid\$1type用于播客工作流程。 MediaTailor从 MPU 的 private\$1data JSON assetId 结构中的参数中派生此值。有关更多信息，请参阅 [Managed Private UPID JSON structure for a podbuster workflow](#podbuster-workflow)。 | 
| [scte.segmentation\$1upid.cueData.key] | 是 |  | 与托管私有 UPID (0xC) 配合使用，segmentation\$1 upid\$1type用于播客工作流程。 MediaTailor从 MPU 的 private\$1data JSON cueData.key 结构中的参数中派生此值。有关更多信息，请参阅 [Managed Private UPID JSON structure for a podbuster workflow](#podbuster-workflow)。 | 
| [scte.segmentation\$1upid.cueData.value] | 是 |  | 与托管私有 UPID (0xC) 配合使用，segmentation\$1 upid\$1type用于播客工作流程。 MediaTailor从 MPU 的 private\$1data JSON cueData.key 结构中的参数中派生此值。有关更多信息，请参阅 [Managed Private UPID JSON structure for a podbuster workflow](#podbuster-workflow)。值可以是字符串。 | 
| [scte.segmentation\$1upid.private\$1data.\$1index\$1] | 是 |  | 与托管私有 UPID (0xC) 配合使用，segmentation\$1upid\$1type用于定向广告工作流程。 MediaTailor 拆分以冒号分隔的分段 UPID 标记，并创建索引会话变量。该索引对应于以冒号分隔的列表中的位置，忽略了初始冒号中的前导空格。例如，如果`segmentation_upid = ":3213214:2313321/5:3943"`，那么： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/mediatailor/latest/ug/variables-session.html) 值可以是字符串。 | 
| [scte.segments\$1expected] | 是 | 10.3.3.1 | 一个可选的整数值，它给出区段集合中各个分段的预期数量。有关此变量的更多信息，请参阅 SCTE-35 规范中的 segments\$1 expected 描述。 | 
| [scte.sub\$1segment\$1num] | 是 | 10.3.3.1 | 一个可选的整数值，用于标识子分段集合中的特定子分段。有关此变量的更多信息，请参阅 SCTE-35 规范中的 sub\$1segment\$1num 描述。 | 
| [scte.sub\$1segments\$1expected] | 是 | 10.3.3.1 | 一个可选的整数值，它给出子分段集合中各个子分段的预期数量。有关此变量的更多信息，请参阅 SCTE-35 规范中的 sub\$1segments\$1expected 描述。 | 
| [scte.unique\$1program\$1id] | 是 | 9.7.2.1 | 由 SCTE-35 splice\$1insert 字段unique\$1program\$1id解析 MediaTailor 的整数值。ADS 使用唯一程序 ID (UPID) 为直播线性流提供程序级广告定向。如果 SCTE-35 命令不是拼接插入，则将其 MediaTailor 设置为空值。值必须为整数。 | 
| [session.avail\$1duration\$1ms] | 是 |  |  广告投放时段的持续时间（以毫秒为单位）。默认值为 300,000 毫秒。 AWS Elemental MediaTailor 从输入清单中获取持续时间值，如下所示： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/mediatailor/latest/ug/variables-session.html)  | 
| [session.avail\$1duration\$1secs] | 是 |  | 以秒为单位的广告投放时段或广告可用性，四舍五入到最接近的秒数。 MediaTailor 确定此值的方式与其确定的方式相同[session.avail\$1duration\$1ms]。 | 
| [session.client\$1ip] | 否 |  |  MediaTailor 请求来自的远程 IP 地址。如果 X-forwarded-for 标头已设置，则该值就是 MediaTailor 用于 client\$1ip 的值。 | 
| [session.id] | 否 |  | 当前播放会话的唯一数字标识符。播放器针对某个会话发出的所有请求都具有相同的 ID，因此它可用于旨在关联针对单一查看的请求的 ADS 字段。 | 
| [session.referer] | 否 |  | 通常是托管视频播放器的页面的网址。 MediaTailor 将此变量设置为玩家在其请求中使用的Referer标头的值 MediaTailor。如果播放器未提供此标头， MediaTailor 会将 [session.referer] 留空。如果您在清单端点前使用内容分发网络 (CDN) 或代理，并且想要显示此变量，请在此处代理来自播放器的正确标头。 | 
| [session.user\$1agent] | 否 |  | 从玩家的会话初始化请求中 MediaTailor 收到的User-Agent标头。如果您要在清单终端节点前面使用 CDN 或代理，则必须在此处代理播放器中的正确标头。 | 
| [session.uuid] | 否 |  |  的替代方案**[session.id]**。这是当前播放会话的唯一标识符，如下所示： <pre>e039fd39-09f0-46b2-aca9-9871cc116cde</pre>  | 
| [avail.source\$1content\$1time\$1epoch\$1ms] | 否 |  |  对于 HLS，该值是开始使用的原始分段的 PDT。对于 DASH 来说，`<SupplementalProperty> urn:scte:dash:utc-time``<Period>`该值是包含`<EventStream>`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/mediatailor/latest/ug/variables-session.html)  | 

**Example**  
如果 ADS 要求使用唯一会话标识符传递名为 `deviceSession` 的查询参数，则 AWS Elemental MediaTailor 中的模板 ADS URL 可能类似于下面这样：  

```
https://my.ads.server.com/path?deviceSession=[session.id]
```
AWS Elemental MediaTailor 自动为每个直播生成一个唯一的标识符，然后输入该标识符来代替`session.id`。如果标识符是`1234567`，则向 ADS 发出的最终请求将如下所示： MediaTailor   

```
https://my.ads.server.com/path?deviceSession=1234567
```
如果 ADS 需要传递多个查询参数，则其中的模板 ADS 网址 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
  }
}
```