

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

# 集成 MPEG-DASH 信号源
<a name="manifest-dash"></a>

AWS Elemental MediaTailor 支持`.mpd`符合 DASH 动态配置文件指南的直播和视频点播 (VOD) 清单。 MediaTailor 接受符合 Dash 的多周期和单周期清单输入，并交付符合 Dash 的多周期清单输出。

输入清单必须具有以下内容：
+ 带有适用于 `splice insert ` 或 ` time signal` 的拼接信息设置的 SCTE-35 事件流。可以使用清除 XML 或 base64 编码的二进制提供设置。
+ 带有 `segment timelines` 的 `Segment templates`。

对于已发布的清单， MediaTailor 要求源服务器的更新保持以下内容不变：
+ 在 `start` 属性中指定的时段开始时间。
+ 时段表示形式的分段模板中的 `presentationTimeOffset` 值。

作为最佳实践，为广告提供与内容流时段相同的`Representation`设置`AdaptationSet`和设置。 AWS Elemental MediaTailor 使用这些设置对广告进行转码以匹配内容流，从而在两者之间顺畅切换。

以下各节提供了有关如何 MediaTailor 处理 DASH 清单中的广告的更多信息。

**Topics**
+ [DASH 广告标记](dash-ad-markers.md)
+ [DASH 广告可用时长](dash-ad-avail-duration.md)
+ [DASH 舱单分段编号](dash-manifest-segment-numbering.md)
+ [DASH MPD 示例](manifest-dash-example.md)
+ [DASH 定位功能](dash-location-feature.md)

# 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
        }
      }
```

# DASH 广告可用时长
<a name="dash-ad-avail-duration"></a>

在播放过程中，当 AWS Elemental MediaTailor 遇到广告可用性时，它会将部分或全部广告替换为广告。 MediaTailor 在广告开始时开始替换广告，包括如下广告：
+ 如果广告可用性指定了持续时间，则在不覆盖随后的内容的情况下，在不覆盖随后的内容的情况下， MediaTailor 包含尽可能多的广告。
+ 如果未提供持续时间，则在广告有效期结束之前 MediaTailor 包含广告。对于多周期清单来说，这就是周期的结束。对于单周期清单，活动到此结束。 MediaTailor 不会在广告结束后播放广告，当广告到达结尾时，会截断当前广告，而不是覆盖随后的内容。

**如何 AWS Elemental MediaTailor 查看广告投放时长**  
AWS Elemental MediaTailor 按以下顺序搜索持续时间设置：

1. `Event` `duration`

1. 对于拼接插入，搜索 `scte35:BreakDuration` `duration`

1. 对于时间信号，搜索 `scte35:SegmentationDescriptor` `segmentationDuration`

如果找 AWS Elemental MediaTailor 不到这些设置中的任何一个，则它会在没有持续时间的情况下管理广告收录。

以下示例显示了具有 `duration` 的 `Event`。

```
  <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>
              ...
```

以下示例显示未指定持续时间的广告效用。`Event` 没有 `duration`，`scte35:SpliceInsert` 元素不包含 `scte35:BreakDuration` 子元素。

```
  <Period start="PT444836.720S" id="123597" duration="PT12.280S">
          <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
            <Event>
              <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="180832" tier="4095">
                <scte35:SpliceInsert spliceEventId="4026531856" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1">
                  <scte35:Program><scte35:SpliceTime ptsTime="5675385600"/></scte35:Program>
                </scte35:SpliceInsert>
              </scte35:SpliceInfoSection>
            </Event>
            ...
```

# DASH 舱单分段编号
<a name="dash-manifest-segment-numbering"></a>

MediaTailor 支持使用`<SegmentTimeline>`和`media`属性定义`<SegmentTemplate>`的媒体片段。您可以使用 `$Number$` 标识符或 `$Time$` 标识符在 `media` 属性中指定媒体段列表。

 以下示例显示了具有 `media` 属性设置的 `SegmentTemplate`，该设置使用 `$Number$` 标识符。

```
        <SegmentTemplate initialization="index_subtitles_4_0_init.mp4?m=1532451703" media="index_subtitles_4_0_$Number$.mp4?m=1532451703" presentationTimeOffset="1062336677920" startNumber="2349899" timescale="90000">
                <SegmentTimeline>
                  <S d="540540" r="2" t="1062338840080"/>
                  <S d="69069" t="1062340461700"/>
                </SegmentTimeline>
              </SegmentTemplate>
```

 以下示例显示了具有 `media` 属性设置的 `SegmentTemplate`，该设置使用 `$Time$` 标识符。

```
        <SegmentTemplate initialization="asset_720p_8000K_9_init.mp4" media="asset_720p_8000K_9_$Time$.mp4" startNumber="1" timescale="90000">
                <SegmentTimeline>
                  <S d="180000" r="2" t="0"/>
                  <S d="147000" t="540000"/>
                </SegmentTimeline>
              </SegmentTemplate>
```

# DASH MPD 示例
<a name="manifest-dash-example"></a>

以下各节提供了 DASH 起源 MPDs 和个性化的示例 MPDs。了解这些示例可以帮助您配置 MediaTailor工作流程并对其进行故障排除。

有关如何将查询参数应用于 DASH 清单和区段的信息，请参阅[MediaTailor DASH 隐式会话初始](manifest-query-parameters-dash-implicit-session-initialization.md)。

## 了解 DASH MPD 结构
<a name="dash-mpd-overview"></a>

基于 HTTP 的动态自适应流式传输 (DASH) 使用媒体演示描述 (MPD) 清单来提供流媒体内容。MPD 是一个 XML 文档，描述了媒体内容的结构和可用性。

MPD（媒体演示说明）  
MPD 是 DASH 流媒体中的主要清单文件，用于描述媒体内容的结构和可用性。它包含有关构成流媒体内容的时段、改编集、表示形式和片段的信息。  
这种清单类型在各种上下文中也有其他几个名称，包括 DASH 清单、DASH MPD、主清单（与 HLS 比较时）或演示文稿清单。  
在 MediaTailor 工作流程中，MPD 是播放请求的入口点，也是广告个性化的起点。

周期  
周期是 DASH 演示文稿中的一个时间部分。每个 Period 都包含一个或多个改编集，代表媒体时间跨度。在广告插入工作流程中，通常使用单独的时间段来划分内容和广告。  
在 MediaTailor 工作流程中，使用时间段将主要内容与广告内容分开，每个广告通常由自己的时间段表示。

AdaptationSet  
对一个或多个媒体内容组件的一 AdaptationSet 组可互换编码版本进行分组。例如，一个 AdaptationSet 可能包含多个视频质量级别，而另一个可能包含多个音频语言选项。  
在 MediaTailor 工作流程中， AdaptationSets 在广告插入期间保留，以保持内容和广告之间媒体类型的一致性。

表示  
表示形式是其中媒体内容的特定编码版本。 AdaptationSet每种表示形式通常在比特率、分辨率或其他编码参数上有所不同，允许客户端根据网络条件和设备功能选择最合适的版本。  
在 MediaTailor 工作流程中，广告周期中的表现尽可能与内容时段中的表现形式紧密匹配，以确保流畅的观看体验。

有关 DASH 清单类型的更多详细信息，请参阅[DASH 清单类型](dash-manifest-types.md)。

有关 DASH 清单结构和配置的信息 AWS Elemental MediaPackage，请参阅 DASH 概述中的 MediaPackage 用户指南部分。

## 直播 DASH MPD 示例
<a name="dash-manifest-live-examples"></a>

本节提供实时 DASH 的示例 MPDs。每个示例都列出了从源站服务器收到的 MPD，然后使用广告对 MPD MediaTailor 进行了个性化设置。

### DASH MPD 拼接插入示例
<a name="dash-manifest-splice-insert-example"></a>

**接头插入的 DASH 原点 MPD 示例**  
以下来自 MPD 的示例显示了 DASH 从内容来源收到的清单中的广告可用性。此示例使用`SpliceInsert`标记来表示广告可用。

```
<Period start="PT173402.036S" id="46041">
  <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
    <Event duration="9450000">
      <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="183265" tier="4095">
        <scte35:SpliceInsert spliceEventId="99" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1">
          <scte35:Program><scte35:SpliceTime ptsTime="7835775000"/></scte35:Program>
          <scte35:BreakDuration autoReturn="true" duration="9450000"/>
        </scte35:SpliceInsert>
        <scte35:SegmentationDescriptor segmentationEventId="99" segmentationEventCancelIndicator="false" segmentationDuration="9450000">
          <scte35:DeliveryRestrictions webDeliveryAllowedFlag="true" noRegionalBlackoutFlag="true" archiveAllowedFlag="true" deviceRestrictions="3"/>
          <scte35:SegmentationUpid segmentationUpidType="8" segmentationUpidLength="0"/>
          <scte35:SegmentationTypeID segmentationType="52"/>
          <scte35:SegmentNum segmentNum="1"/>
          <scte35:SegmentsExpected segmentsExpected="1"/>
        </scte35:SegmentationDescriptor>
      </scte35:SpliceInfoSection>
    </Event>
  </EventStream>
  <AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
    <Representation id="1" width="960" height="540" frameRate="30000/1001" bandwidth="1000000" codecs="avc1.4D401F">
      <SegmentTemplate timescale="30000" media="index_video_1_0_$Number$.mp4?m=1528475245" initialization="index_video_1_0_init.mp4?m=1528475245" startNumber="178444" presentationTimeOffset="10395907501">
        <SegmentTimeline>
          <S t="10395907501" d="60060" r="29"/>
          <S t="10397709301" d="45045"/>
        </SegmentTimeline>
      </SegmentTemplate>
    </Representation>
  </AdaptationSet>
  <AdaptationSet mimeType="audio/mp4" segmentAlignment="0" lang="eng">
    <Representation id="2" bandwidth="96964" audioSamplingRate="48000" codecs="mp4a.40.2">
      <SegmentTemplate timescale="48000" media="index_audio_2_0_$Number$.mp4?m=1528475245" initialization="index_audio_2_0_init.mp4?m=1528475245" startNumber="178444" presentationTimeOffset="16633452001">
        <SegmentTimeline>
          <S t="16633452289" d="96256" r="3"/>
          <S t="16633837313" d="95232"/>
          <S t="16633932545" d="96256" r="4"/>
          <S t="16634413825" d="95232"/>
          <S t="16634509057" d="96256" r="5"/>
          <S t="16635086593" d="95232"/>
          <S t="16635181825" d="96256" r="4"/>
          <S t="16635663105" d="95232"/>
          <S t="16635758337" d="96256" r="5"/>
          <S t="16636335873" d="71680"/>
        </SegmentTimeline>
      </SegmentTemplate>
    </Representation>
  </AdaptationSet>
</Period>
```

在这个 Origin MPD 示例中：
+ 该`<EventStream>`元素包含 SCTE-35 标记，用于指示广告可用
+ 该`<scte35:SpliceInsert>`元素提供有关广告可用性的详细信息
+ `<scte35:BreakDuration>`元素指定广告时段的持续时间
+ 这些`<AdaptationSet>`元素定义了可用的视频和音频流

**用于拼接插件的 DASH 个性化 MPD 示例**  
AWS Elemental MediaTailor 根据广告规格对广告进行个性化设置。个性化设置反映了从播放器和当前正在进行的广告活动接收的查看者数据。

以下示例显示了对广告进行 AWS Elemental MediaTailor 个性化设置后的可用性。

```
<Period id="178443_1" start="PT96H15M30.25S">
  <BaseURL>http://111122223333.cloudfront.net/nbc_fallback_2/</BaseURL>
  <AdaptationSet bitstreamSwitching="false" frameRate="30/1" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
    <SegmentTemplate startNumber="1" timescale="90000"/>
    <Representation bandwidth="10000000" codecs="avc1.640028" height="1080" id="1" width="1920">
      <SegmentTemplate initialization="nbc_fallback_ad_2_1080p_10init.mp4" media="nbc_fallback_ad_2_1080p_10_$Number%09d$.mp4" startNumber="1" timescale="90000">
        <SegmentTimeline>
          <S d="180000" r="13" t="0"/>
          <S d="176940" t="2520000"/>
        </SegmentTimeline>
      </SegmentTemplate>
    </Representation>
    <Representation bandwidth="4000000" codecs="avc1.64001f" height="720" id="2" width="1280">
      <SegmentTemplate initialization="nbc_fallback_ad_2_720p_9init.mp4" media="nbc_fallback_ad_2_720p_9_$Number%09d$.mp4" startNumber="1" timescale="90000">
        <SegmentTimeline>
          <S d="180000" r="13" t="0"/>
          <S d="176940" t="2520000"/>
        </SegmentTimeline>
      </SegmentTemplate>
    </Representation>
  </AdaptationSet>
  <AdaptationSet mimeType="audio/mp4" segmentAlignment="0" lang="eng">
    <Representation id="8" bandwidth="128000" audioSamplingRate="48000" codecs="mp4a.40.2">
      <SegmentTemplate initialization="nbc_fallback_ad_2_audio_2init.mp4" media="nbc_fallback_ad_2_audio_2_$Number%09d$.mp4" startNumber="1" timescale="90000">
        <SegmentTimeline>
          <S d="180000" r="13" t="0"/>
          <S d="176940" t="2520000"/>
        </SegmentTimeline>
      </SegmentTemplate>
    </Representation>
  </AdaptationSet>
</Period>
```

在这个个性化 MPD 示例中：
+ MediaTailor 为广告内容创建了新的时段
+ 该`<BaseURL>`元素指向广告内容的位置
+ 这些`<AdaptationSet>`元素保持与内容相似的结构
+ 这些`<Representation>`元素为广告内容提供了不同的质量等级

### DASH MPD 时间信号示例
<a name="dash-manifest-time-signal-example"></a>

**DASH 原点 MPD 时间信号示例**  
以下来自 MPD 的示例显示了 DASH 从内容来源收到的清单中的广告可用性。此示例使用`TimeSignal`标记来表示广告可用。

```
<Period start="PT173402.036S" id="46041">
  <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
    <Event duration="9450000">
      <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="183265" tier="4095">
        <scte35:TimeSignal>
          <scte35:SpliceTime ptsTime="7835775000"/>
        </scte35:TimeSignal>
        <scte35:SegmentationDescriptor segmentationEventId="99" segmentationEventCancelIndicator="false" segmentationDuration="9450000">
          <scte35:DeliveryRestrictions webDeliveryAllowedFlag="true" noRegionalBlackoutFlag="true" archiveAllowedFlag="true" deviceRestrictions="3"/>
          <scte35:SegmentationUpid segmentationUpidType="8" segmentationUpidLength="0"/>
          <scte35:SegmentationTypeID segmentationType="52"/>
          <scte35:SegmentNum segmentNum="1"/>
          <scte35:SegmentsExpected segmentsExpected="1"/>
        </scte35:SegmentationDescriptor>
      </scte35:SpliceInfoSection>
    </Event>
  </EventStream>
  <AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
    <Representation id="1" width="960" height="540" frameRate="30000/1001" bandwidth="1000000" codecs="avc1.4D401F">
      <SegmentTemplate timescale="30000" media="index_video_1_0_$Number$.mp4?m=1528475245" initialization="index_video_1_0_init.mp4?m=1528475245" startNumber="178444" presentationTimeOffset="10395907501">
        <SegmentTimeline>
          <S t="10395907501" d="60060" r="29"/>
          <S t="10397709301" d="45045"/>
        </SegmentTimeline>
      </SegmentTemplate>
    </Representation>
  </AdaptationSet>
</Period>
```

在这个 Origin MPD 示例中：
+ 使用该`<scte35:TimeSignal>`元素代替 `<scte35:SpliceInsert>`
+ `<scte35:SegmentationDescriptor>`提供了有关广告可用性的更多信息

**DASH 个性化 MPD 时间信号示例**  
AWS Elemental MediaTailor 根据广告规格对广告进行个性化设置。个性化设置反映了从播放器和当前正在进行的广告活动接收的查看者数据。

以下示例显示了对广告进行 AWS Elemental MediaTailor 个性化设置后的可用性。

```
<Period id="178443_1" start="PT96H15M30.25S">
  <BaseURL>http://111122223333.cloudfront.net/nbc_fallback_2/</BaseURL>
  <AdaptationSet bitstreamSwitching="false" frameRate="30/1" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
    <SegmentTemplate startNumber="1" timescale="90000"/>
    <Representation bandwidth="10000000" codecs="avc1.640028" height="1080" id="1" width="1920">
      <SegmentTemplate initialization="nbc_fallback_ad_2_1080p_10init.mp4" media="nbc_fallback_ad_2_1080p_10_$Number%09d$.mp4" startNumber="1" timescale="90000">
        <SegmentTimeline>
          <S d="180000" r="13" t="0"/>
          <S d="176940" t="2520000"/>
        </SegmentTimeline>
      </SegmentTemplate>
    </Representation>
  </AdaptationSet>
</Period>
```

时间信号的个性化 MPD 与拼接插入的 MPD 类似，它为广告内容 MediaTailor 创建了一个新的周期。

## VOD DASH MPD 示例
<a name="dash-manifest-vod-examples"></a>

本节提供视频点播 (VOD) DASH MPDs 的示例。每个示例都列出了从源站服务器收到的 MPD，然后使用广告对 MPD MediaTailor 进行了个性化设置。

VOD DASH MPDs 遵循与直播相同的结构 MPDs，但它们通常在 MPD 元素中有一个`type="static"`属性，并且可能包含不同内容片段的多个时段。

有关 VOD DASH 的示例 MPDs，请参阅中的 MediaTailor 文档。[DASH 广告标记](dash-ad-markers.md)

## 个性化的主要区别 MPDs
<a name="dash-manifest-key-differences"></a>

对 DASH MediaTailor 进行个性化设置时 MPDs，它会进行一些重要的更改：

经期处理  
+ 为广告内容创建了新的时段
+ 调整时段开始时间以保持时间表的连续性
+ EventStream 带有 SCTE-35 标记的元素会被处理和移除

AdaptationSet 和陈述处理  
+ AdaptationSets 在广告中，创建时段是为了匹配内容而创建的 AdaptationSets
+ 为广告内容的不同质量水平创建了陈述
+ SegmentTemplate 元素已更新为指向广告内容

了解这些更改可以帮助您解决 MediaTailor 工作流程中的问题，并确保正确配置 CDN 和播放器。

## 相关主题
<a name="dash-manifest-related-topics"></a>

有关 DASH MPDs 和的更多信息 MediaTailor，请参阅以下主题：
+ [DASH 清单类型](dash-manifest-types.md)-详细说明 DASH 清单类型
+ [使用 CDN 优化 MediaTailor 广告个性化和内容交付](integrating-cdn.md)-有关将 CDN 与以下内容一起使用的信息 MediaTailor
+ [MediaTailor 广告插入的工作原理](what-is-flow.md)- MediaTailor 广告插入工作原理概述
+ 有关 DASH 清单结构和 MediaPackage 配置的全面信息，请参阅 DASH 概述中的 MediaPackage 用户指南部分。

# DASH 定位功能
<a name="dash-location-feature"></a>

本节提供了有关 DASH 的位置功能（在 AWS Elemental MediaTailor中默认启用）的信息。如果您创建了用于访问 MediaTailor 清单的内容分发网络 (CDN) 路由规则，请阅读本节。如果您对不支持粘性 HTTP 重定向的播放器使用服务器端报告，也请参阅本节。

**什么是位置功能？**  
位置功能允许不支持粘性 HTTP 重定向的播放器在其清单更新请求中提供粘性行为。

AWS Elemental MediaTailor 使用无会话初始化，它需要玩家进行粘性 HTTP 重定向行为。通过服务器端报告，当玩家请求更新清单时 MediaTailor，该服务会发出 302 临时重定向，将玩家定向到个性化清单的端点。 MediaTailor 在响应中包含会话 ID 作为查询参数。其目的是使播放器遵循整个会话的 URL，但不支持粘性 HTTP 重定向的播放器会删除重定向并返回原始 URL。当玩家返回到原始 URL 时，每个新请求都会 MediaTailor 创建一个新的会话，而不是停留在原始会话中。这可能会导致清单损坏。

DASH 规范在定位功能中提供了解决此问题的方法，该功能在 AWS Elemental MediaTailor 配置中默认处于启用状态。启用此功能后， MediaTailor 将绝对 URL 放在清单`<Location>`标签中。不支持粘性 HTTP 重定向的播放器可以使用 `<Location>` 中提供的 URL 来请求对清单的更新。

**我是否需要在我的配置中禁用位置功能？**  
位置功能将覆盖您设置的用于访问 AWS Elemental MediaTailor 清单的所有 CDN 路由规则，因此，您可能需要禁用该功能。位置功能不会影响内容或广告分段的 CDN 缓存。

在以下列表中查找您的情况，以确定您是否需要为您的配置禁用位置功能以及如何处理该功能：
+ 如果您尚未设置用于访问 AWS Elemental MediaTailor 清单的 CDN 路由规则，请将位置设置保持启用状态。
+ 否则，请使用以下规则：
  + 如果您未使用服务器端报告或您所有的播放器都支持粘性 HTTP 重定向，请禁用位置功能。有关如何在控制台上执行此操作的信息，请参阅[创建 MediaTailor 播放配置](configurations-create.md)。
  + 否则，请联系 [AWS Suppor](https://aws.amazon.com/premiumsupport/) t。

**我是否需要使用位置功能？**  
对于不支持粘性 HTTP 重定向的玩家，你需要使用定位功能。对您所有的清单更新请求使用 `<Location>` 标签中提供的 URL。

**示例**  
示例 URLs 和示例`<Location>`标签。
+   
**Example 示例：初始请求 URL**  

  ```
  https://777788889999.mediatailor.us-east-1.amazonaws.com/v1/dash/5ca4c1892b1f213a1247fad47b3e34c454a7d490/testLocationTag/index.mpd
  ```
+   
**Example 示例：重定向的 302 响应**  

  ```
  /v1/dash/5ca4c1892b1f213a1247fad47b3e34c454a7d490/testLocationTag/index.mpd?aws.sessionId=0e5d9b45-ae97-49eb-901b-893d043e0aa6
  ```
+   
**Example 示例：清单中的位置标签**  

  ```
  <Location>https://777788889999.mediatailor.us-east-1.amazonaws.com/v1/dash/5ca4c1892b1f213a1247fad47b3e34c454a7d490/testLocationTag/index.mpd?aws.sessionId=0e5d9b45-ae97-49eb-901b-893d043e0aa6</Location>
  ```