

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 整合 MediaTailor 廣告插入的內容來源
<a name="integrating-origin"></a>

本主題涵蓋將不同類型的影片內容來源與 MediaTailor 整合。MediaTailor 支援即時和隨需內容的 HLS 和 DASH 串流通訊協定。服務可以在指定的廣告休息時間執行廣告插入或替換，並對輸入影片資訊清單的結構和格式具有特定要求，以啟用這些功能。下列主題提供輸入來源需求的詳細資訊，以及將 HLS 和 DASH 內容與 MediaTailor 整合以啟用個人化廣告體驗的步驟。

**Topics**
+ [MediaTailor 廣告插入的輸入來源需求](stream-reqmts.md)
+ [整合 HLS 來源](manifest-hls.md)
+ [整合 MPEG-DASH 來源](manifest-dash.md)
+ [保護與 SigV4 的 AWS Elemental MediaTailor 原始伺服器互動](origin-sigv4.md)

# MediaTailor 廣告插入的輸入來源需求
<a name="stream-reqmts"></a>

輸入來源必須符合下列要求，才能使用 MediaTailor：
+ 使用 Apple HLS (HTTP Live Streaming) 或 MPEG DASH (Dynamic Adaptive Streaming over HTTP)
+ 使用即時串流或隨需影片 (VOD)
+ 在公有網際網路上可供存取，並且有公有 IP 地址
+ 使用標準 HTTP 連接埠 （連接埠 80) 或 HTTPS 連接埠 （連接埠 443)。MediaTailor 不支援原始伺服器通訊的自訂連接埠。
+ 包含 [ MediaTailor 廣告插入教學課程中所述的其中一種格式的廣告](getting-started-ad-insertion.md#getting-started-prep-stream)標記 

# 整合 HLS 來源
<a name="manifest-hls"></a>

AWS Elemental MediaTailor 針對即時串流和隨選視訊 (VOD) 支援 `EXT-X-VERSION``3`或更高版本的 `.m3u8` HLS 資訊清單。當 MediaTailor 遇到廣告休息時間時，會根據內容類型嘗試廣告插入或替換。如果沒有足夠的廣告來填滿持續時間，在廣告休息時間的剩餘時間內，MediaTailor 會顯示基礎內容串流或設定的場記板。如需根據內容類型之 HLS 廣告行為的詳細資訊，請參閱 [了解 AWS Elemental MediaTailor 廣告插入行為](ad-behavior.md)。

下列各節提供 MediaTailor 如何處理 HLS 資訊清單的詳細資訊。

**Topics**
+ [HLS 支援的廣告標記](hls-ad-markers.md)
+ [啟用廣告標記傳遞](ad-marker-passthrough.md)
+ [HLS 資訊清單標籤處理](manifest-hls-tags.md)
+ [HLS 資訊清單範例](manifest-hls-example.md)

# HLS 支援的廣告標記
<a name="hls-ad-markers"></a>

AWS Elemental MediaTailor 透過剖析支援廣告標記的輸入資訊清單，識別 HLS 資訊清單中的廣告時段邊界。下列各節說明 MediaTailor 使用哪些標記。

## EXT-X-ASSET
<a name="hls-ad-markers-asset"></a>

`EXT-X-ASSET` 標籤包含廣告決策伺服器 (ADS) 用來為觀眾個人化內容的中繼資料。 `EXT-X-ASSET` 參數是逗號分隔的鍵值對。

若要使用此標籤，您必須符合下述要求：
+ 您必須對原始資訊清單中的 `EXT-X-ASSET` *值*進行 URL 編碼。下列範例顯示具有索引鍵和 URL 編碼值的 `EXT-X-ASSET` 標籤。

  ```
              #EXT-X-ASSET:GENRE=CV,CAID=12345678,EPISODE="Episode%20Name%20Date",SEASON="Season%20Name%20and%20Number",SERIES="Series%2520Name"
  ```
+ 您必須在 MediaTailor ADS 組態中包含動態`[asset.]`變數和*金鑰*。下列範例顯示使用 動態`[asset.]`變數和金鑰的 MediaTailor ADS 組態。

  ```
              https://myads.com/stub?c=[asset.GENRE]&g=[asset.CAID]&e=[asset.EPISODE]&s=[asset.SEASON]&k=[asset.SERIES]
  ```

**範例 VAST 請求**  
以下範例顯示向 ADS 提出的 VAST `GET` 請求。

```
            https://myads.com/stub?c=CV&g=12345678&e=Episode%20Name%20Date&s=Season%20Name%20and%20Number&k=Series%2520Name
```

## EXT-X-CUE-OUT 和 EXT-X-CUE-IN
<a name="hls-ad-markers-cue"></a>

這類廣告標記最常見。以下範例顯示這些提示標記的選項。

```
#EXT-X-CUE-OUT:DURATION=120
    ...
    #EXT-X-CUE-IN
```

```
#EXT-X-CUE-OUT:30.000
    ...
    #EXT-X-CUE-IN
```

```
#EXT-X-CUE-OUT
    ...
    #EXT-X-CUE-IN
```

## EXT-X-DATERANGE
<a name="hls-ad-markers-range"></a>

使用 `EXT-X-DATERANGE` 廣告標記標籤，您會使用 `SCTE35-OUT` 屬性來指定廣告時段的時間。

**注意**  
AWS Elemental MediaTailor 會忽略為`EXT-X-DATERANGE`廣告標記提供的任何`START-DATE`屬性。

您可以指定下列其中一種方法來指定廣告時段：
+ `EXT-X-DATERANGE` 標籤具有 `SCTE35-OUT` 和 `DURATION` 規格。

  範例

  ```
  #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",DURATION=60.000,SCTE35-OUT=0xF
  ```
+ 配對的 `EXT-X-DATERANGE` 標籤，第一個具有 `SCTE35-OUT` 規格，而第二個具有 `SCTE35-IN` 規格。

  範例

  ```
  #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",SCTE35-OUT=0xF
      ...
      #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",SCTE35-IN=0xF
  ```
+ 之前選項的組合。您可以指定 `EXT-X-DATERANGE` 標籤搭配 `SCTE35-OUT` 和 `DURATION` 規格，接著是 `EXT-X-DATERANGE` 標籤搭配 `SCTE35-IN` 規格。在此情況下，MediaTailor 會使用兩個規格中最早的提示設定。

  範例

  ```
  #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",DURATION=60.000,SCTE35-OUT=0xF
      ...
      #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",SCTE35-IN=0xF
  ```

## EXT-X-SPLICEPOINT-SCTE35
<a name="hls-ad-markers-splice"></a>

您可以在 base64 編碼二進位中附加 `EXT-X-SPLICEPOINT-SCTE35` 廣告標記標籤，搭配 SCTE-35 承載。解碼的二進位必須提供 SCTE-35 `splice_info_section`，包含提示出標記 `0x34` 用於供應商放置機會開始，以及提示入標記 `0x35` 用於供應商放置機會結束。

以下範例顯示的接合點規格，具有指定提示出和提示入標記的 base64 編碼二進位承載。

```
    #EXT-X-SPLICEPOINT-SCTE35:/DA9AAAAAAAAAP/wBQb+uYbZqwAnAiVDVUVJAAAKqX//AAEjW4AMEU1EU05CMDAxMTMyMjE5M19ONAAAmXz5JA==
    ...
    #EXT-X-SPLICEPOINT-SCTE35:/DA4AAAAAAAAAP/wBQb+tTeaawAiAiBDVUVJAAAKqH+/DBFNRFNOQjAwMTEzMjIxOTJfTjUAAIiGK1s=
```

# 啟用廣告標記傳遞
<a name="ad-marker-passthrough"></a>

根據預設，HLS 的 MediaTailor 個人化資訊清單不包含來源資訊清單的 SCTE-35 廣告標記。啟用廣告標記傳遞時，MediaTailor 會將下列廣告標記從原始資訊清單傳遞至個人化資訊清單：
+ EXT-X-CUE-IN
+ EXT-X-CUE-OUT
+ EXT-X-SPLICEPOINT-SCTE35

 廣告標記傳遞是選用的設定。如果您想要將 SCTE 廣告標記包含在 MediaTailor 個人化資訊清單中，請使用廣告標記傳遞。常見的使用案例包括下列項目：
+ 內容替換 - 執行內容替換或內容限制。
+ 廣告追蹤 - 根據是否存在一或多個廣告標記來觸發廣告追蹤資訊。
+ 玩家設定 - 根據是否存在廣告標記，在玩家的 UI 中啟用清除或倒數計時器功能。

**注意**  
MediaTailor 不會變更這些標記的值。例如，如果`60`原始資訊清單中`EXT-X-CUE-OUT`的值為 ，但未放置任何廣告，MediaTailor 不會將個人化資訊清單中的值變更為 `0` 。

## 啟用廣告標記傳遞
<a name="enable-ad-marker-passthrough"></a>

您可以使用 AWS 管理主控台 或 AWS Command Line Interface () 啟用廣告標記傳遞AWS CLI。

**使用主控台啟用廣告標記傳遞**

1. 在 https：//[https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) 開啟 MediaTailor 主控台。

1.  選取**新組態**或**編輯組態**。

1. 在**進階設定**區段中，從下拉式選單中選取**啟用**。

**使用 AWS Command Line Interface (AWS CLI) 啟用廣告標記傳遞**  
使用 [put-playback-configuration](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/put-playback-configuration.html) 命令。

# HLS 資訊清單標籤處理
<a name="manifest-hls-tags"></a>

本節說明 如何 AWS Elemental MediaTailor 管理個人化輸出資訊清單中的標籤。

## EXT-X-CUE 標籤
<a name="manifest-hls-tags-cue"></a>

MediaTailor 會將輸入資訊清單中的 `EXT-X-CUE-OUT-CONT`、 `EXT-X-CUE-OUT`和 `EXT-X-CUE-IN` 標籤取代為輸出資訊清單中的`EXT-X-DISCONTINUITY`標籤。`DISCONTINUITY` 標籤會標記以下邊界：
+ 主要內容轉場到廣告的位置
+ 廣告轉場到另一個廣告的位置
+ 廣告轉場回到主要內容的位置

## EXT-X-DATERANGE 標籤
<a name="manifest-hls-tags-daterange"></a>

MediaTailor 會將`EXT-X-DATERANGE`標籤從輸入資訊清單傳遞至輸出資訊清單。MediaTailor 也會插入對應至`EXT-X-DISCONTINUITY`標籤的`DATERANGE`標籤。`DISCONTINUITY` 標籤會標記以下邊界：
+ 主要內容轉場到廣告的位置
+ 廣告轉場到另一個廣告的位置
+ 廣告轉場回到主要內容的位置

## EXT-X-KEY 標籤
<a name="manifest-hls-tags-key"></a>

MediaTailor 會從輸入資訊清單傳遞`EXT-X-KEY`標籤。這些標籤表示主要內容已加密。由於廣告未加密，MediaTailor `EXT-X-KEY:METHOD=NONE`會在廣告時段開始時插入 。播放返回主要內容時，MediaTailor 會使用定義為加密類型的`METHOD`值插入`EXT-X-KEY`標籤，以重新啟用加密。

## 無法辨識的標籤
<a name="manifest-hls-tags-unknown"></a>

MediaTailor 會將所有未知和自訂標籤從輸入資訊清單傳遞至輸出資訊清單。

# HLS 資訊清單範例
<a name="manifest-hls-example"></a>

以下各節提供 HLS 產地來源資訊清單及個人化資訊清單的例子。了解這些範例可協助您設定 MediaTailor 工作流程並進行疑難排解。

如需如何將查詢參數套用至 HLS 資訊清單和區段的資訊，請參閱 [MediaTailor HLS 隱含工作階段初始化](manifest-query-parameters-hls-implicit-session-initialization.md)。

## 了解 HLS 播放清單類型
<a name="hls-playlist-overview"></a>

HTTP 即時串流 (HLS) 使用兩種主要播放清單類型：

多變體播放清單  
多變量播放清單是列出內容所有可用轉譯的最上層索引檔案。它包含媒體播放清單的參考，但不包含任何媒體區段本身。此播放清單允許玩家根據網路條件、裝置功能或使用者偏好設定選取最適當的轉譯。  
此播放清單類型也在各種內容中由多個其他名稱所知道，包括主播放清單、主資訊清單、主播放清單、主播放清單、索引檔案或主 M3U8。  
在 MediaTailor 工作流程中，多變量播放清單是播放請求的進入點，也是廣告個人化開始的位置。

媒體播放清單  
媒體播放清單包含內容特定轉譯 （品質層級） 的實際媒體區段資訊。它包含播放單一轉譯所需的時間資訊、區段 URLs 和其他中繼資料。  
此播放清單類型也稱為媒體播放清單、子資訊清單、區塊清單、媒體 M3U8 或轉譯播放清單。  
在 MediaTailor 工作流程中，媒體播放清單會個人化，以適當順序包含內容區段和廣告區段。

如需 HLS 播放清單類型的詳細資訊，請參閱 [HLS 播放清單類型](hls-playlist-types.md)。

## HLS 原始伺服器資訊清單範例
<a name="manifest-hls-ex-origin"></a>

下列範例顯示 HLS 從內容來源接收的 AWS Elemental MediaTailor HLS 多變體播放清單。

```
#EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-STREAM-INF:BANDWIDTH=2665726,AVERAGE-BANDWIDTH=2526299,RESOLUTION=960x540,FRAME-RATE=29.970,CODECS="avc1.640029,mp4a.40.2",SUBTITLES="subtitles"
    index_1.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=3956044,AVERAGE-BANDWIDTH=3736264,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640029,mp4a.40.2",SUBTITLES="subtitles"
    index_2.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=995315,AVERAGE-BANDWIDTH=951107,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401E,mp4a.40.2",SUBTITLES="subtitles"
    index_3.m3u8
    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles",NAME="caption_1",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="eng",URI="index_4_0.m3u8"
```

在此多變量播放清單範例中：
+ 這些`#EXT-X-STREAM-INF`標籤以不同的解析度和位元速率定義不同的轉譯
+ 每個轉譯都會參考媒體播放清單 （例如 `index_1.m3u8`)
+ `#EXT-X-MEDIA` 標籤定義字幕音軌

下列範例顯示 HLS 從內容來源 AWS Elemental MediaTailor 接收的 HLS 媒體播放清單。此範例使用 `EXT-X-CUE-OUT` 和 `EXT-X-CUE-IN` 標籤來描述廣告利用機會。

```
#EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:7
    #EXT-X-MEDIA-SEQUENCE:8779957
    #EXTINF:6.006,
    index_1_8779957.ts?m=1566416212
    #EXTINF:6.006,
    index_1_8779958.ts?m=1566416212
    #EXTINF:5.372,
    index_1_8779959.ts?m=1566416212
    #EXT-OATCLS-SCTE35:/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXT-X-CUE-OUT:20.020
    #EXTINF:0.634,
    index_1_8779960.ts?m=1566416212
    #EXT-X-CUE-OUT-CONT:ElapsedTime=0.634,Duration=21,SCTE35=/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXTINF:6.006,
    index_1_8779961.ts?m=1566416212
    #EXT-X-CUE-OUT-CONT:ElapsedTime=6.640,Duration=21,SCTE35=/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXTINF:6.006,
    index_1_8779962.ts?m=1566416212
    #EXT-X-CUE-OUT-CONT:ElapsedTime=12.646,Duration=21,SCTE35=/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXTINF:6.006,
    index_1_8779963.ts?m=1566416212
    #EXT-X-CUE-OUT-CONT:ElapsedTime=18.652,Duration=21,SCTE35=/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXTINF:1.368,
    index_1_8779964.ts?m=1566416212
    #EXT-X-CUE-IN
    #EXTINF:4.638,
    index_1_8779965.ts?m=1566416212
    #EXTINF:6.006,
    index_1_8779966.ts?m=1566416212
    #EXTINF:6.006,
    index_1_8779967.ts?m=1566416212
    #EXTINF:6.006,
    index_1_8779968.ts?m=1566416212
```

在此媒體播放清單中，範例為：
+ `#EXTINF` 標籤會指定每個區段的持續時間
+ `#EXT-X-CUE-OUT` 標籤標記廣告休息時間的開頭
+ `#EXT-X-CUE-OUT-CONT` 標籤提供有關進行中廣告休息時間的資訊
+ `#EXT-X-CUE-IN` 標籤標記廣告休息時間的結尾

## HLS 個人化資訊清單範例
<a name="manifest-hls-ex-personalized"></a>

下列範例顯示個人化 AWS Elemental MediaTailor HLS 多變量播放清單。

```
#EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-MEDIA:LANGUAGE="eng",AUTOSELECT=YES,FORCED=NO,TYPE=SUBTITLES,URI="../../../manifest/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/3.m3u8",GROUP-ID="subtitles",DEFAULT=YES,NAME="caption_1"
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-STREAM-INF:CODECS="avc1.640029,mp4a.40.2",AVERAGE-BANDWIDTH=2526299,RESOLUTION=960x540,SUBTITLES="subtitles",FRAME-RATE=29.97,BANDWIDTH=2665726
    ../../../manifest/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0.m3u8
    #EXT-X-STREAM-INF:CODECS="avc1.640029,mp4a.40.2",AVERAGE-BANDWIDTH=3736264,RESOLUTION=1280x720,SUBTITLES="subtitles",FRAME-RATE=29.97,BANDWIDTH=3956044
    ../../../manifest/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/1.m3u8
    #EXT-X-STREAM-INF:CODECS="avc1.4D401E,mp4a.40.2",AVERAGE-BANDWIDTH=951107,RESOLUTION=640x360,SUBTITLES="subtitles",FRAME-RATE=29.97,BANDWIDTH=995315
    ../../../manifest/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/2.m3u8
```

請注意MediaTailor 如何修改媒體播放清單 URLs以包含啟用個人化廣告插入的工作階段特定資訊。

下列範例顯示個人化 AWS Elemental MediaTailor 媒體播放清單。

```
#EXTM3U
    #EXT-X-VERSION:6
    #EXT-X-TARGETDURATION:7
    #EXT-X-MEDIA-SEQUENCE:8779957
    #EXT-X-DISCONTINUITY-SEQUENCE:0
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779957.ts?m=1566416212
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779958.ts?m=1566416212
    #EXTINF:5.372,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779959.ts?m=1566416212
    #EXT-X-DISCONTINUITY
    #EXTINF:3.066667,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779960
    #EXTINF:3.0,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779961
    #EXTINF:3.0,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779962
    #EXTINF:3.0,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779963
    #EXTINF:2.966667,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779964
    #EXT-X-DISCONTINUITY
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779963.ts?m=1566416212
    #EXTINF:1.368,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779964.ts?m=1566416212
    #EXTINF:4.638,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779965.ts?m=1566416212
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779966.ts?m=1566416212
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779967.ts?m=1566416212
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779968.ts?m=1566416212
```

在此個人化媒體播放清單中，範例為：
+ MediaTailor 已在內容區段之間插入廣告區段
+ `#EXT-X-DISCONTINUITY` 標籤會標記內容和廣告之間的轉換
+ 內容區段是從原始伺服器提供 （此範例中為MediaPackage)
+ 廣告客群是從 MediaTailor 的廣告客群儲存體提供

## 個人化資訊清單的主要差異
<a name="manifest-hls-key-differences"></a>

當 MediaTailor 個人化 HLS 資訊清單時，會進行幾項重要的變更：

多變量播放清單變更  
+ 變體播放清單 URLs會重新寫入，以指向包含工作階段資訊的 MediaTailor 受管 URLs 
+ 標籤順序可以重新組織，以獲得最佳播放

變體播放清單變更  
+ 廣告標記 (`EXT-X-CUE-OUT`、`EXT-X-CUE-IN`) 會取代為實際廣告區段
+ 在內容/廣告界限新增不連續性標記 (`EXT-X-DISCONTINUITY`)
+ 內容區段 URLs會重新寫入以指向原始伺服器或 CDN
+ 新增廣告客群 URLs 以指向 MediaTailor 的廣告客群儲存體

了解這些變更可協助您疑難排解 MediaTailor 工作流程中的問題，並確保 CDN 和播放器的組態正確。

## 相關主題
<a name="manifest-hls-related-topics"></a>

如需 HLS 資訊清單和 MediaTailor 的詳細資訊，請參閱下列主題：
+ [HLS 播放清單類型](hls-playlist-types.md) - HLS 播放清單類型的詳細說明
+ [使用 CDN 最佳化 MediaTailor 廣告個人化和內容交付](integrating-cdn.md) - 搭配 MediaTailor 使用 CDN 的相關資訊
+ [MediaTailor 廣告插入的運作方式](what-is-flow.md) - MediaTailor 廣告插入的運作方式概觀

# 整合 MPEG-DASH 來源
<a name="manifest-dash"></a>

AWS Elemental MediaTailor 支援遵循 DASH 動態設定檔準則的`.mpd`隨需視訊 (VOD) 資訊清單。MediaTailor 接受多期間和單一期間 DASH 相容資訊清單輸入，並提供多期間 DASH 相容資訊清單輸出。

輸入資訊清單必須具有下列項目：
+ SCTE-35 事件串流搭配 `splice insert ` 或 ` time signal` 的接合資訊設定。可以以 Clear XML 或以 base64 編碼的二進位提供此設定。
+ `Segment templates` 與 `segment timelines`。

對於已發佈的資訊清單，MediaTailor 要求來自原始伺服器的更新保持不變：
+ 期間開始時間，指定於 `start` 屬性。
+ 顯示期間之片段範本中的 `presentationTimeOffset` 值。

最佳實務是為廣告時段提供與內容串流期間相同的 `AdaptationSet`和 `Representation` 設定。 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**：MediaTailor `TimeSignal` 會在每個包含 `SpliceInsert`或提示輸出標記`Period`的第一個 `Event` 中插入廣告。MediaTailor 會忽略 中的其他`Event`標記`Period`。
+ **單一期間 DASH**：MediaTailor `TimeSignal` 會在 `Event`中插入每個包含 `SpliceInsert`或提示輸出標記`Period`的廣告。

根據預設， 會將 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` 必須具有下列屬性，其中 值是有效的 [Cue-out 號碼](#dash-signal-xml-values)： `segmentationTypeId="xx"`
+ `scte35:SegmentationDescriptor` 必須保留 `scte35:SegmentationUpid` 
<a name="dash-signal-xml-values"></a>
**Cue-out 號碼**  
以下是 支援的提示號碼`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`，其具有與 `scte35:SpliceInfoSection` 元素中 Clear XML 將提供的一組相同資訊。此命令類型必須是 `splice_insert()` 或 `time_signal()`，並且其他設定必須遵守前述針對 Clear 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` 屬性中指定媒體區段清單。

 以下範例顯示的 `SegmentTemplate` 具有使用 `$Number$` 識別符的 `media` 屬性設定。

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

 以下範例顯示的 `SegmentTemplate` 具有使用 `$Time$` 識別符的 `media` 屬性設定。

```
        <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 是播放請求的進入點，也是廣告個人化開始的位置。

Period  
期間是 DASH 簡報的暫時區段。每個期間包含一或多個適應集，並代表媒體時間的範圍。在廣告插入工作流程中，通常會使用個別的期間來描述內容和廣告。  
在 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，並在 MediaTailor 使用廣告個人化 MPD 之後。

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

在此原始 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>
```

在此原始 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，並在 MediaTailor 使用廣告個人化 MPD 之後。

VOD DASH MPDs遵循與即時 MPDs相同的結構，但它們通常在 MPD 元素中具有`type="static"`屬性，並且可能包含不同內容區段的多個期間。

如需 VOD DASH MPDs的範例，請參閱 上的 MediaTailor 文件[DASH 廣告標記](dash-ad-markers.md)。

## 個人化 MPDs的主要差異
<a name="dash-manifest-key-differences"></a>

當 MediaTailor 個人化 DASH MPDs時，會進行幾項重要的變更：

期間處理  
+ 為廣告內容建立新的期間
+ 調整期間開始時間以維持時間軸連續性
+ 處理和移除具有 SCTE-35 標記的 EventStream 元素

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) - 搭配 MediaTailor 使用 CDN 的相關資訊
+ [MediaTailor 廣告插入的運作方式](what-is-flow.md) - MediaTailor 廣告插入的運作方式概觀
+ 如需 DASH 資訊清單結構和 MediaPackage 組態的完整資訊，請參閱 DASH 概觀上的 MediaPackage 使用者指南一節。

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

本節提供有關 DASH 定位功能的資訊，這項功能在 AWS Elemental MediaTailor中為預設啟用狀態。如果您建立內容交付網路 (CDN) 路由規則來存取 MediaTailor 資訊清單，請閱讀本節。如果您要使用伺服器端報告搭配不支援黏性 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 Support](https://aws.amazon.com/premiumsupport/)。

**我是否需要使用定位功能？**  
對於不支援黏性 HTTP 重新導向的玩家，您需要使用位置功能。為您的所有資訊清單更新請求使用 `<Location>` 標籤中所提供的 URL。

**範例**  
URL 範例和 `<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>
  ```

# 保護與 SigV4 的 AWS Elemental MediaTailor 原始伺服器互動
<a name="origin-sigv4"></a>

Signature 第 4 版 (SigV4) 是一種簽署通訊協定，用於驗證透過 HTTPS 對支援原始伺服器的 MediaTailor 請求。MediaTailor 僅支援 HTTPS 通訊，不允許 HTTP 連線。透過 SigV4 簽署，MediaTailor 會在對 MediaTailor Channel Assembly、Amazon S3 和第 2 AWS Elemental MediaPackage 版提出的 HTTPS 原始伺服器請求中包含已簽署的授權標頭。

您可以在原始伺服器使用 SigV4，以確保資訊清單請求只有在來自 MediaTailor 且包含已簽署的授權標頭時才會滿足。如此一來，未經授權的 MediaTailor 播放組態會遭到封鎖，無法存取原始伺服器內容。如果已簽署的授權標頭有效，您的原始伺服器會滿足請求。如果無效，請求會失敗。

下列各節說明對支援的原始伺服器使用 MediaTailor SigV4 簽署的要求。

## MediaTailor 頻道組件需求
<a name="origin-sigv4-ca"></a>

如果您使用 SigV4 來保護 MediaTailor Channel Assembly 原始伺服器，MediaTailor 必須滿足下列要求才能存取資訊清單：
+ MediaTailor 組態中的原始伺服器基本 URL 必須是下列格式的頻道組合頻道： `channel-assembly.mediatailor.region.amazonaws.com`
+ 您的原始伺服器必須設定為使用 HTTPS。MediaTailor 僅支援 HTTPS 通訊，不允許 HTTP 連線。如果原始伺服器未啟用 HTTPS，MediaTailor 將不會簽署請求。
+ 您的頻道必須具有包含下列項目的原始存取政策：
  + MediaTailor 存取您頻道的主要存取權。授予 **mediatailor.amazonaws.com** 的存取權。
  + IAM 許可 **mediatailor：GetManifest **讀取 MediaTailor 組態參考的所有多變體播放清單。

  如需在頻道上設定政策的資訊，請參閱 [使用 MediaTailor 主控台建立頻道](channel-assembly-creating-channels.md)。

**Example Channel Assembly 的原始存取政策，範圍限定於 MediaTailor 組態帳戶**  

```
{
    "Effect": "Allow",
    "Principal": {"Service": "mediatailor.amazonaws.com"},
    "Action": "mediatailor:GetManifest",
    "Resource": "arn:aws:mediatailor:us-west-2:777788889999:channel/ca-origin-channel",
    "Condition": {
        "StringEquals": {"AWS:SourceAccount": "777788889999"}
    }
}
```

**Example 頻道組件的原始存取政策，範圍為 MediaTailor 播放組態**  

```
{
    "Effect": "Allow",
    "Principal": {"Service": "mediatailor.amazonaws.com"},
    "Action": "mediatailor:GetManifest",
    "Resource": "arn:aws:mediatailor:us-west-2:777788889999:channel/ca-origin-channel",
    "Condition": {
        "StringEquals": {"AWS:SourceArn": "arn:aws:mediatailor:us-west-2:777788889999:playbackConfiguration/test"}
    }
}
```

## Amazon S3 需求
<a name="origin-sigv4-s3"></a>

如果您使用 SigV4 來保護 Amazon S3 原始伺服器，MediaTailor 必須滿足下列要求，才能存取資訊清單：
+ MediaTailor 組態中的原始伺服器基本 URL 必須是 S3 儲存貯體，格式如下： `s3.region.amazonaws.com`
+ 您的原始伺服器必須設定為使用 HTTPS。MediaTailor 僅支援 HTTPS 通訊，不允許 HTTP 連線。如果原始伺服器未啟用 HTTPS，MediaTailor 將不會簽署請求。
+ 您的頻道必須具有包含下列項目的原始存取政策：
  + MediaTailor 存取儲存貯體的主要存取權。授予 **mediatailor.amazonaws.com 的存取權。**

    如需在 IAM 中設定存取權的資訊，請參閱《AWS Identity and Access [Management](https://docs.aws.amazon.com/) 使用者指南》中的存取管理。 *AWS Identity and Access Management * 
  + IAM 許可 **s3：GetObject **讀取 MediaTailor 組態參考的所有最上層資訊清單。

 如需 SigV4 for Amazon S3 的一般資訊，請參閱 *Amazon S3 API 參考*中的[驗證請求 (AWS Signature 第 4 版）](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) 主題。

**Example Amazon S3 的原始存取政策，範圍限定於 MediaTailor 帳戶**  

```
{
    "Effect": "Allow",
    "Principal": {"Service": "mediatailor.amazonaws.com"},
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::mybucket/*",
    "Condition": {
        "StringEquals": {"AWS:SourceAccount": "111122223333"}
    }
}
```

**Example Amazon S3 的原始存取政策，範圍為 MediaTailor 播放組態**  

```
{
    "Effect": "Allow",
    "Principal": {"Service": "mediatailor.amazonaws.com"},
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::mybucket/*",
    "Condition": {
        "StringEquals": {"AWS:SourceArn": "arn:aws:mediatailor:us-west-2:111122223333:playbackConfiguration/test”}
    }
}
```

## MediaPackage 需求
<a name="origin-sigv4-mp"></a>

如果您使用 SigV4 來保護 MediaPackage v2 原始伺服器，MediaTailor 必須滿足下列要求才能存取資訊清單：
+ MediaTailor 組態中的原始伺服器基本 URL 必須是 MediaPackage v2 端點，格式如下： `mediapackagev2.region.amazonaws.com`
+ 您的原始伺服器必須設定為使用 HTTPS。MediaTailor 僅支援 HTTPS 通訊，不允許 HTTP 連線。如果原始伺服器未啟用 HTTPS，MediaTailor 將不會簽署請求。
+ 您的頻道必須具有原始存取政策，其中包含下列項目：
  + MediaTailor 存取端點的主要存取權。授予 **mediatailor.amazonaws.com 的存取權。**
  + IAM 許可 **mediapackagev2：GetObject **讀取 MediaTailor 組態參考的所有多變體播放清單。

 如需 SigV4 for MediaPackage v2 的一般資訊，請參閱 *MediaPackage v2 API 參考*中的[驗證請求 (AWS Signature 第 4 版）](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) 主題。

**Example MediaPackage v2 的原始存取政策，範圍限定於 MediaTailor 帳戶**  

```
{
    "Effect": "Allow",
    "Principal": {"Service": "mediatailor.amazonaws.com"},
    "Action": "mediapackagev2:GetObject",
    "Resource": "arn:aws:mediapackagev2:us-west-2:444455556666:channelGroup/emp-origin-channel-group/channel/emp-origin-channel/originEndpoint/emp-origin-endpoint",
    "Condition": {
        "StringEquals": {"AWS:SourceAccount": "444455556666"}
    }
}
```

**Example MediaPackage v2 的原始存取政策，範圍限定於 MediaTailor 播放組態**  

```
{
    "Effect": "Allow",
    "Principal": {"Service": "mediatailor.amazonaws.com"},
    "Action": "mediapackagev2:GetObject",
    "Resource": "arn:aws:mediapackagev2:us-west-2:444455556666:channelGroup/emp-origin-channel-group/channel/emp-origin-channel/originEndpoint/emp-origin-endpoint",
    "Condition": {
        "StringEquals": {"AWS:SourceArn": "arn:aws:mediatailor:us-west-2:444455556666:playbackConfiguration/test”"}
    }
}
```