

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

# DASH 广告标记
<a name="dash-ad-markers"></a>

MediaTailor 

AWS Elemental MediaTailor 使用 SCTE-35 提示标记通过以下逻辑识别 DASH 清单中的可用广告：
+ **多时段 DASH**：`Event`在每个时段中 MediaTailor 插入第一个`Period`包含`SpliceInsert`或`TimeSignal`提示标记的广告。 MediaTailor忽略中的其他`Event`标记。`Period`
+ **单周期 DASH**：`Event`在每个广告中 MediaTailor 插入`Period`包含其中一个`SpliceInsert`或一个`TimeSignal`提示标记的广告。

默认情况下，将 DASH 清单作为多周期清单进行 AWS Elemental MediaTailor 管理。您可以更改配置以处理源服务器中的单周期 DASH 清单。有关信息，请参阅[创建 MediaTailor 播放配置](configurations-create.md)。

以下各节提供了有关DASH广告标记处理的更多详细信息，并提供了来自来源的装饰清单。

## DASH 起源清单 XML 要求
<a name="dash-ad-markers-examples"></a>

来自来源的 DASH 清单中的广告标记必须格式正确， MediaTailor 才能识别广告插播时间。以下主题以清晰的 XML 形式描述了这些格式要求。

### `SpliceInsert`用清晰的 XML
<a name="dash-splice-xml"></a>

`SpliceInsert`透明 XML 中的广告标记必须包含以下内容：
+ `EventStream`必须具有以下属性：`schemeIdUri=urn:scte:scte35:2013:xml`
+ `Event`必须持有 `scte35:SpliceInfoSection` 
+ `scte35:SpliceInfoSection`必须持有 `scte35:SpliceInsert` 
+ `scte35:SpliceInsert`必须具有以下属性：`outOfNetworkIndicator="true"`

**Example `SpliceInsert`在 XML 中**  
在以下示例中，所需的 SCTE 标记以粗体显示。  

```
<Period start="PT444806.040S" id="123586" 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="4026531855" 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>
    </Event>
  .
  .
  .
</Period>
```

### `TimeSignal`用清晰的 XML
<a name="dash-signal-xml"></a>

`TimeSignal`透明 XML 中的广告标记必须包含以下内容：
+ `EventStream`必须具有以下属性：`schemeIdUri=urn:scte:scte35:2013:xml`
+ `Event`必须持有 `scte35:SpliceInfoSection`
+ `scte35:SpliceInfoSection`必须持有 `scte35:TimeSignal`
+ `scte35:SpliceInfoSection`还必须持有 `scte35:SegmentationDescriptor`
+ `scte35:SegmentationDescriptor`必须具有以下属性，其中值是有效的[提示数字](#dash-signal-xml-values)：`segmentationTypeId="xx"`
+ `scte35:SegmentationDescriptor`必须持有 `scte35:SegmentationUpid` 
<a name="dash-signal-xml-values"></a>
**提示数字**  
以下是支持的提示数字。`segmentationTypeId`


| 分段消息 | segmentationTypeId 值 | 十六进制值 | 
| --- | --- | --- | 
| 分销商广告已结束 | 51 | 0x51 | 
| 分销商广告开始 | 50 | 0x32 | 
| 分销商安置机会结束 | 55 | 0x37 | 
| 分销商安置机会开始 | 54 | 0x36 | 
| 结束时刻 | 35 | 0x23 | 
| 提供商广告已结束 | 49 | 0x31 | 
| 提供商广告开始 | 48 | 0x30 | 
| 提供商叠加放置机会结束 | 57 | 0x39 | 
| 提供商叠加放置机会开始 | 56 | 0x38 | 
| 提供商安置机会结束 | 53 | 0x35 | 
| 提供商安置机会开始 | 52 | 0x34 | 
| 开始休息 | 34 | 0x22 | 

**Example `TimeSignal`在 XML 中**  
在以下示例中，所需的 SCTE 标记以粗体显示。  

```
<Period start="PT346530.250S" id="178443" 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="1414668" 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>
  .
  .
  .
</Period>
```

## DASH 起源清单 base64 编码的二进制文件要求
<a name="dash-base64"></a>

来自来源的 DASH 清单中的广告标记必须格式正确， MediaTailor 才能识别广告插播时间。以下主题介绍了 base64 编码的二进制文件中的这些格式要求。

base64 编码的清单中的`SpliceInsert`广告标记`TimeSignal`和广告标记都必须包含以下内容：
+ `EventStream`必须具有以下属性：`urn:scte:scte35:2014:xml+bin`
+ `Event`必须持有 `scte35:Signal`
+ `scte35:Signal`必须包含一个 base64 编码的二进制文件。`scte35:Binary`

解码后的二进制文件提供的信息必须`splice_info_section`与清晰 XML 广告标记所需的信息相同。
+ 命令类型必须是`splice_insert()`或 `time_signal()`
+ 其他设置必须符合[`TimeSignal`用清晰的 XML](#dash-signal-xml)和中描述的设置[`SpliceInsert`用清晰的 XML](#dash-splice-xml)。

 解码后的二进制必须提供 `splice_info_section`，且其信息集必须与清除 XML 在 `scte35:SpliceInfoSection` 元素中提供的相同。命令类型必须为 `splice_insert()` 或 `time_signal()`，且其他设置必须符合先前针对清除 XML 交付的描述。

以下示例显示了此选项，所需标记以粗体显示。

```
<Period start="PT444806.040S" id="123586" 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</scte35:Binary>
        </scte35:Signal>
      </Event>
      <Event presentationTime="1541436360" duration="24" id="30">
        <scte35:Signal xmlns="http://www.scte.org/schemas/35/2016">
          <scte35:Binary>QW5vdGhlciB0ZXN0IHN0cmluZyBmb3IgZW5jb2RpbmcgdG8gQmFzZTY0IGVuY29kZWQgYmluYXJ5Lg==</scte35:Binary>
        </scte35:Signal>
      </Event>
  .
  .
  .
</Period>
```

以下是先前示例中列出的第一个事件的解码二进制。`splice_command_type` 的设置为 5，这表示 `splice_insert`。

```
{
        "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
        },
        "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
        }
      }
```