

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

# 使用 ESAM XML 指定 SCTE-35 標記
<a name="specifying-scte-35-markers-using-esam-xml"></a>

如果您的輸入視訊不包含 SCTE-35 標記，但您需要在輸出中指定廣告插入點，您可以在 AWS Elemental MediaConvert 任務設定中提供事件訊號和管理 (ESAM) XML 文件。當您這麼做時，MediaConvert 會使用 IDR (Instantaneous Decoder Refresh) 影格在文件中指定的插入點設定輸出。在也包裝在 MPEG2-TS 和 HLS 容器中的輸出中，MediaConvert 會在這些點插入 SCTE-35 time\$1signal 訊息。

對於 **Apple HLS** 輸出群組，您也可以提供 HLS 資訊清單調節 XML 文件。然後，您可以設定任務以相應地調節 HLS 輸出的資訊清單。

**注意**  
若要將 SCTE-35 標記放入 MPEG2-TS 輸出中，除了提供 ESAM XML 文件外，還必須在每個輸出上啟用 **ESAM SCTE-35**。如需詳細資訊，請參閱此概觀後的主控台程序。

**關於 ESAM 文件中的時間碼**  
剪輯和拼接輸入後，請在 XML 文件中指定相對於最終輸出時間的插入點。無論您的時間碼設定如何，都從 00:00:00:00 開始計時。使用下列 24 小時格式搭配影格編號：HH：MM：SS：FF。

例如，某個任務有以下三個輸入：五分鐘的片頭、1 小時的影片，以及五分鐘的片尾。您可以使用輸入剪輯來剪輯調整一小時輸入的最後 20 分鐘。所以加上片頭和片尾的輸出是 30 分鐘長。如果您希望第一個插入點出現在主要內容的三分鐘內，您會在五分鐘前導的三分鐘後指定它。

**若要在任務設定中包含 ESAM XML 文件 (主控台)**

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

1. 選擇**建立新任務**。

1. 如 [教學課程：設定任務設定](setting-up-a-job.md) 和 [建立輸出](output-settings.md) 中的說明，為視訊與音訊設定您的輸入、輸出群組及輸出。

1. 在左側 **Job (任務)** 窗格的 **Job settings (任務設定)** 部分中，選擇 **Settings (設定)**。

1. 在 **Ad signaling (廣告訊號)** 部分，啟用 **Event signaling and messaging (ESAM) (事件訊號和訊息 (ESAM))**。

1. 對於 **Signal processing notification XML (訊號處理通知 XML)**，以文字輸入您的 ESAM 訊號 XML 文件。如需範例，請參閱 [ESAM XML 訊號處理通知範例](example-esam-xml.md)。
**注意**  
根據預設，MediaConvert 會將四秒的前置作業新增至 ESAM 承載。這可能會導致 MediaConvert 將 SCTE-35 訊息放置在早於 HLS 資訊清單中提示標記指定的區段。若要移除前導，請將 `responseSignalPreroll`設為零。此設定是 [EsamSettings](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs-id.html#jobs-id-model-esamsettings) 的子項。

1. 如果您想要在 HLS 資訊清單中包含 SCTE-35 標記的相關資訊，請在**資訊清單確認條件通知 XML** 中，以文字形式輸入您的 ESAM 資訊清單條件式 XML 文件。MediaConvert 不會在 DASH 資訊清單中包含 SCTE-35 標記的相關資訊。

   若要在傳輸串流中插入除資訊清單外的 SCTE-35 標記，請將 MCC `dataPassThrough` 文件中的 屬性設定為 `"true"`。如果您不想要傳輸串流中的標記，請移除`dataPassThrough`屬性。

   如需範例，請參閱 [ESAM XML 資訊清單確認條件通知範例](example-esam-xml-manifest-conditioning.md)。

1. 對於您想要 SCTE-35 標記的每個 MPEG2-TS 輸出，啟用標記：

   1. 在左側 **Job (任務)** 窗格的 **Output groups (輸出群組)**、**File group (檔案群組)** 下方，選擇輸出。

   1. 確認它是 MPEG2-TS 輸出。在 **Output settings (輸出設定)** 部分，確保 **Container (容器)** 設為 **MPEG-2 Transport Stream (MPEG-2 傳輸串流)**。

   1. 選擇 **Container settings (容器設定)**，然後捲動以找到 **PID controls (PID 控制)** 部分。

   1. 針對 **ESAM SCTE-35**，選擇 **Enabled (已啟用)**。

   1. 對於 **SCTE-35 source (SCTE-35 來源)**，保留預設的 **None (無)**。

1. 請僅針對任務中的任何 **Apple HLS** 輸出群組執行此步驟。

   如果要使用 ESAM 插入點來調節 HLS 資訊清單，請依照[在您的 HLS 資訊清單中包含 SCTE-35 資訊](including-scte-35-information-in-your-hls-manifest.md)中的程序進行。否則，請依照以下步驟，以確認下列設定仍處於其預設狀態：

   1. 確保 **Manifest confirm condition notification XML (資訊清單確認條件通知 XML)** (在此過程的前一步驟中討論過) 為空。

   1. 對於任務每個 **Apple HLS** 輸出群組，請確認 **Ad Markers (廣告標記)** 保持為未核取。

      1. 從左側 **Job (任務)** 窗格的 **Output groups (輸出群組)** 下方，選擇 **Apple HLS**。

      1. 在 **Apple HLS group settings (Apple HLS 群組設定)** 部分，選擇 **Advanced (進階)**。

      1. 在 **Ad markers (廣告標記)** 部分，清除 **Elemental** 和 **SCTE-35 enhanced (SCTE-35 增強型)** 核取方塊。

   1. 對於 **Apple HLS** 輸出群組的每個輸出，確認 **SCTE-35 source (SCTE-35 來源)** 設定為 **None (無)**：

      1. 從左側 **Job (任務)** 窗格的 **Output groups (輸出群組)**、**Apple HLS** 下方，選擇輸出。

      1. 在 **Output settings (輸出設定)** 部分，選擇 **Transport stream settings (傳輸串流設定)**。

      1. 針對 **SCTE-35 source (SCTE-35 來源)** 選擇 **None (無)**。

**在任務設定中包含 ESAM XML 文件 (API、 SDK AWS CLI)**

1. 在 JSON 任務規格的任務設定根目錄中，包含 [`esam` 屬性](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-jobsettings-esam)及其子項。這些屬性如以下範例所示。

   1.  在設定 `sccXml` 中包含 ESAM 訊號處理 XML 規格做為字串。

   1. 或者，在設定 `mccXml` 中包含資訊清單確認條件 XML 通知文件，做為字串：

   ```
     "esam": {
       "responseSignalPreroll": 4000,
       "signalProcessingNotification": {
         "sccXml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<SignalProcessingNotification ..."
       },
       "manifestConfirmConditionNotification": {
         "mccXml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<ns2:ManifestConfirmConditionNotification ... " 
       }
   ```

1. 對於任務中的每個 M2TS (MPEG2 傳輸串流) 輸出，如以下範例所示，設定 JSON 任務規格。包含屬性 [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-m2tssettings-scte35esam](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-m2tssettings-scte35esam)。將 [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-m2tssettings-scte35source](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-m2tssettings-scte35source) 設定為 `NONE`。

   ```
     "outputs": [
           {
             "extension": "m2ts",
             "containerSettings": {
               "container": "M2TS",
               "m2tsSettings": {
                 ...
   
                 "scte35Esam": {
                   "scte35EsamPid": 508
                 },
                 ...
                 "scte35Source": "NONE"
               }
   ```

1. 如果要使用 SCTE-35 資訊來調節 HLS 資訊清單，請為任務中的每個 Apple HLS 輸出群組包含以下內容。這些設定顯示在此步驟結尾的範例中：
   +  將 [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-m3u8settings-scte35source](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-m3u8settings-scte35source) 設定為 `PASSTHROUGH`。
   + 包含 [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-hlsgroupsettings-admarkers](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-hlsgroupsettings-admarkers) 並以陣列列出 `ELEMENTAL_SCTE35` 或 `ELEMENTAL` 其中一個或兩者。

     如需選取了每個設定而建立的範例資訊清單，請參閱[範例資訊清單：元素廣告標記](sample-manifest-elemental-ad-markers.md)和[範例資訊清單：SCTE-35 增強型廣告標記](sample-manifest-scte-35-enhanced-ad-markers.md)。

   如果您不想使用 SCTE-35 資訊調節 HLS 資訊清單，請為 `scte35Source` 保留預設設定 `NONE` 並且不要包含 `adMarkers`：

   ```
     "outputGroups": [
       {
         "customName": "apple_hls",
         "outputGroupSettings": {
           "type": "HLS_GROUP_SETTINGS",
           "hlsGroupSettings": {
             "adMarkers": [
               "ELEMENTAL_SCTE35"
             ],
             ...
   
           }
         },
         "outputs": [
           {
             "extension": "m3u8",
             "nameModifier": "high",
             "outputSettings": {
               "hlsSettings": {
                 ...
               }
             },
             "containerSettings": {
               "container": "M3U8",
               "m3u8Settings": {
                 ...
                 "scte35Source": "PASSTHROUGH"
               }
   ```

1. 照常提交您的任務。

   如需有關以程式設計方式提交 AWS Elemental MediaConvert 任務的資訊，請參閱[AWS Elemental MediaConvert 使用 AWS SDKs的入門或 AWS CLI](https://docs.aws.amazon.com/mediaconvert/latest/apireference/custom-endpoints.html) [和 AWS Elemental MediaConvert 使用 API 的入門](https://docs.aws.amazon.com/mediaconvert/latest/apireference/getting-started.html)。

# ESAM XML 訊號處理通知範例
<a name="example-esam-xml"></a>

這個 ESAM XML 區塊會產生兩個 30 秒的廣告休息時間，一個在 10 秒播放，另一個在 75 秒播放。

```
<?xml version="1.0" encoding="UTF-8"?>
<SignalProcessingNotification xmlns="urn:cablelabs:iptvservices:esam:xsd:signal:1" xmlns:sig="urn:cablelabs:md:xsd:signaling:3.0" xmlns:common="urn:cablelabs:iptvservices:esam:xsd:common:1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" acquisitionPointIdentity="ExampleESAM">

    <common:BatchInfo batchId="1">
      <common:Source xsi:type="content:MovieType" />
    </common:BatchInfo>

    <ResponseSignal acquisitionPointIdentity="ExampleESAM" acquisitionSignalID="1" signalPointID="10.00" action="create">
      <sig:NPTPoint nptPoint="10.00"/>
      <sig:SCTE35PointDescriptor spliceCommandType="06">
        <sig:SegmentationDescriptorInfo segmentEventId="1" segmentTypeId="52" upidType="9" upid="1" duration="PT30S" segmentNumber="1" segmentsExpected="1"/>
      </sig:SCTE35PointDescriptor>
    </ResponseSignal>
    <ConditioningInfo acquisitionSignalIDRef="1" startOffset="PT10S" duration="PT30S"/>

    <ResponseSignal acquisitionPointIdentity="ExampleESAM" acquisitionSignalID="2" signalPointID="40.00" action="create">
      <sig:NPTPoint nptPoint="40.00" />
      <sig:SCTE35PointDescriptor spliceCommandType="06">
        <sig:SegmentationDescriptorInfo segmentEventId="1" segmentTypeId="53" upidType="9" upid="2"/>
      </sig:SCTE35PointDescriptor>
    </ResponseSignal>

    <ResponseSignal acquisitionPointIdentity="ExampleESAM" acquisitionSignalID="3" signalPointID="75.00" action="create">
      <sig:NPTPoint nptPoint="75.00"/>
      <sig:SCTE35PointDescriptor spliceCommandType="06">
        <sig:SegmentationDescriptorInfo segmentEventId="2" segmentTypeId="52" upidType="9" upid="3" duration="PT30S" segmentNumber="2" segmentsExpected="1"/>
      </sig:SCTE35PointDescriptor>
    </ResponseSignal>
    <ConditioningInfo acquisitionSignalIDRef="3" startOffset="PT75S" duration="PT30S"/>
    
    <ResponseSignal acquisitionPointIdentity="ExampleESAM" acquisitionSignalID="4" signalPointID="105.00" action="create">
      <sig:NPTPoint nptPoint="105.00" />
      <sig:SCTE35PointDescriptor spliceCommandType="06">
        <sig:SegmentationDescriptorInfo segmentEventId="2" segmentTypeId="53" upidType="9" upid="4"/>
      </sig:SCTE35PointDescriptor>
    </ResponseSignal>

</SignalProcessingNotification>
```

# ESAM XML 資訊清單確認條件通知範例
<a name="example-esam-xml-manifest-conditioning"></a>

此 ESAM 資訊清單確認條件 (MCC) XML 文件會產生兩個 30 秒廣告休息時間的 HLS 資訊清單提示標籤。第一個從 10 秒開始；第二個從 75 秒開始。這些提示資訊清單標籤也包含可供下游用戶端用於廣告替換和插入的資料。以此 MCC 文件產生的輸出包含 SCTE-35 訊息，會在第一個廣告休息時間內嵌至傳輸串流檔案，但不會在第二個廣告休息時間內嵌。

記下第一個廣告休息時間的 `dataPassThrough` 屬性。當此屬性存在且設定為 時`"true"`，MediaConvert 除了資訊清單之外，還會在傳輸串流中插入 SCTE-35 標記。對於您只想要在資訊清單中標記的任何廣告休息時間，請保留 `dataPassThrough` 屬性。

MediaConvert 僅支援在 HLS 套件中使用 ESAM 進行資訊清單調節。

```
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<ns2:ManifestConfirmConditionNotification xmlns:ns2="http://www.cablelabs.com/namespaces/metadata/xsd/confirmation/2" xmlns="http://www.cablelabs.com/namespaces/metadata/xsd/core/2" xmlns:ns3="http://www.cablelabs.com/namespaces/metadata/xsd/signaling/2">
  <ns2:ManifestResponse acquisitionPointIdentity="ExampleESAM" acquisitionSignalID="1" duration="PT30S" dataPassThrough="true"> 
  <ns2:SegmentModify>
      <ns2:FirstSegment>
        <ns2:Tag value="#EXT-X-CUE-OUT:4,SpliceType=VOD_DAI,Action=REPLACE, PAID=amazon.com/TEST2014020500000346,Acds=BA" />
      </ns2:FirstSegment>
      <ns2:SpanSegment>
        <ns2:Tag value="#EXT-X-CUE-OUT-CONT:${secondsFromSignal}/4, SpliceType=VOD_DAI,Action=REPLACE,PAID=amazon.com/TEST2014020500000346,Acds=BA" adapt="true" />
      </ns2:SpanSegment>
      <ns2:LastSegment>
        <ns2:Tag value="#EXT-X-CUE-IN:4,SpliceType=VOD_DAI" locality="after" adapt="true" />
      </ns2:LastSegment>
    </ns2:SegmentModify>
	</ns2:ManifestResponse>
  <ns2:ManifestResponse acquisitionPointIdentity="ExampleESAM" acquisitionSignalID="2"></ns2:ManifestResponse>
  <ns2:ManifestResponse acquisitionPointIdentity="ExampleESAM" acquisitionSignalID="3" duration="PT30S">  
  <ns2:SegmentModify>
      <ns2:FirstSegment>
        <ns2:Tag value="#EXT-X-OUT:4,SpliceType=VOD_DAI,Action=REPLACE, PAID=amazon.com/TEST2014020500000347,Acds=BA" />
      </ns2:FirstSegment>
      <ns2:SpanSegment>
        <ns2:Tag value="#EXT-X-OUT-CONT:${secondsFromSignal}/4, SpliceType=VOD_DAI,Action=REPLACE,PAID=amazon.com/TEST2014020500000346,Acds=BA" adapt="true" />
      </ns2:SpanSegment>
      <ns2:LastSegment>
        <ns2:Tag value="#EXT-X-CUE-IN:4,SpliceType=VOD_DAI" locality="after" adapt="true" />
      </ns2:LastSegment>
    </ns2:SegmentModify>
	</ns2:ManifestResponse>
	<ns2:ManifestResponse acquisitionPointIdentity="ExampleESAM" acquisitionSignalID="4"></ns2:ManifestResponse>
</ns2:ManifestConfirmConditionNotification>
```