

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# `SegmentTemplate` での`duration` 属性
<a name="segtemp-format-duration"></a>

デフォルトの DASH マニフェストでは、`SegmentTemplate` が `SegmentTimeline` を保持します。タイムラインは、その有効期間とその開始時刻を含め、`Representation` 内のすべてのセグメントについて説明しています。ライブイベントでは、 はエンコーダーからセグメントを受信すると、タイムラインにセグメント AWS Elemental MediaPackage を追加します。新しく利用可能なセグメントを認識するために、再生デバイスは、更新されたマニフェストを定期的に MediaPackage に対しリクエストする必要があります。

ある表現内のすべてのセグメントの再生時間が同じである場合、MediaPackage を有効にして `SegmentTimeline` オブジェクトを削除することで、レイテンシーを軽減し、マニフェストを短縮できます。その代わりに、MediaPackage により `SegmentTemplate` プロパティに `duration` 属性が追加されます。再生デバイスは、 `duration` と `startNumber` を使用して、セグメントがいつ利用できるかを計算します。再生デバイスは、セグメントについて知るために更新されたマニフェストに依存する必要がないため、再生を維持するために常に更新をリクエストする必要がありません。`duration` 属性の動作方法については、以下のセクションを参照してください。

**トピック**
+ [`duration` 属性の動作について](#how-stemp-dur-works)
+ [`duration` 属性と圧縮された DASH マニフェスト](#stemp-dur-combos)

## `duration` 属性の動作について
<a name="how-stemp-dur-works"></a>

「[DASH エンドポイントの作成](endpoints-dash.md)」で説明されているように、DASH エンドポイントでの [**セグメントテンプレートフォーマット**] 設定により `$duration$` 属性を有効にします。マニフェストでは次のような処理が実行されます。

1. が DASH マニフェスト AWS Elemental MediaPackage を生成すると、次の例に示すように、 属性が `SegmentTemplate` オブジェクトに追加`duration`されます。  
**Example**  

   ```
   <SegmentTemplate timescale="30000" media="index_video_1_0_$Number$.mp4?m=1535562908" initialization="index_video_1_0_init.mp4?m=1535562908" startNumber="175032" duration="90000" presentationTimeOffset="62061"/>
   ```

   セグメントタイムラインと個々のセグメントの説明は、セグメントテンプレートに含まれません。
**重要**  
最終セグメントを除き、セグメントの所要時間の値からの逸脱は 50% 以下にする必要があります。期間が 90000 の場合、セグメントは 45000～135000 (30000 のタイムスケールにおいて 1.5～4.5 秒) の間である必要があります。  
**Example**  

   次に、セグメントテンプレートで `duration` を使用する適応セットの例を示します。

   ```
   <AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
     <Representation id="1" width="852" height="480" frameRate="30/1" bandwidth="1200000" codecs="avc1.4D401F">
       <SegmentTemplate timescale="30000" media="index_video_1_0_$Number$.mp4?m=1535562908" initialization="index_video_1_0_init.mp4?m=1535562908" startNumber="175032" duration="90000" presentationTimeOffset="62061"/>
     </Representation>
     <Representation id="2" width="640" height="360" frameRate="30/1" bandwidth="800000" codecs="avc1.4D401E">
       <SegmentTemplate timescale="30000" media="index_video_3_0_$Number$.mp4?m=1535562908" initialization="index_video_3_0_init.mp4?m=1535562908" startNumber="175032" duration="90000" presentationTimeOffset="62061"/>
     </Representation>
     <Representation id="3" width="320" height="240" frameRate="30/1" bandwidth="499968" codecs="avc1.4D400D">
       <SegmentTemplate timescale="30000" media="index_video_5_0_$Number$.mp4?m=1535562908" initialization="index_video_5_0_init.mp4?m=1535562908" startNumber="175032" duration="90000" presentationTimeOffset="62061"/>
     </Representation>
   </AdaptationSet>
   ```

1. 再生デバイスは、`media` 属性で定義されている URL を使用してセグメントをリクエストします。URL では、最初のセグメントの `SegmentTemplate` にある `startNumber` の値から始めて、`$Number$` 変数をセグメントの数に置き換えます。

1. 再生デバイスが最新のセグメントを決定する必要がある場合は、次の式を使用します。

   ((ウォールクロック時刻 - `availabilityStartTime`) / (`duration` / `timescale`)) \$1 `startNumber`  
**Example**  

   再生デバイスは、以下の値で最新のセグメントを計算します。
   + 再生デバイスのウォールクロック時間: 2018-11-16T19:18:30Z
   + `availabilityStartTime` - マニフェストの `MPD` オブジェクトからの属性: 2018-11-16T19:08:30Z
   + `duration` - マニフェストの `SegmentTemplate` オブジェクトからの属性: 90000
   + `timescale` - `SegmentTemplate` からの属性: 30000
   + `startNumber` - `SegmentTemplate` からの属性: 175032

   使用する計算は ((2018-11-16T19:18:30Z - 2018-11-16T19:08:30Z) / (90000/30000)) \$1 175032

   この計算が、(経過時間 600 秒) / (セグメント再生時間 3 秒) = 200 経過セグメント、になります。これらのセグメントを 175232 開始セグメントに追加すると、最新セグメントが 175032 になります。

## `duration` 属性の制約事項
<a name="stemp-limitations"></a>

適切な再生を確保し、競合するセグメント期間の問題を防ぐために、 は `duration` 属性に次の制限 AWS Elemental MediaPackage を適用します。
+ この機能は、エンドポイントを作成する場合のみ有効にすることができます。

  DASH マニフェストに後で `duration` 属性を追加するためにエンドポイントを変更することはできません。これには、あるセグメントテンプレート形式から `duration` を使用する別の形式に変更することが関係しています。たとえば、`SegmentTimeline` で `$Time$` 変数を使用し、次に `duration` で `$Number$` 変数を編集するエンドポイントを作成することはできません。
+ エンドポイントの作成時に設定した [**セグメントの再生時間**] 値を保持する必要があります。

  セグメントの再生時間を変更するためにエンドポイントを編集することはできません。
+ `duration` を使用するエンドポイントから単一期間の DASH マニフェストを生成する必要があります。

  `duration` 属性で複数期間の DASH を使用することはできません。
+ 取り込まれるストリームでは、標準のセグメンテーションケイデンスを使用する必要があります。
+ 取り込まれるストリームで可変セグメント長を使用することはできません。SCTE-35 関連のセグメンテーションの場合がその例です。

## `duration` 属性と圧縮された DASH マニフェスト
<a name="stemp-dur-combos"></a>

圧縮されたマニフェストを `duration` 属性と組み合わせると、マニフェストのサイズをさらに減少できますが、大幅な減少ではありません。圧縮されたマニフェストには、適応セットごとに 1 つの `SegmentTimeline` と `SegmentTemplate` があります。`duration` 属性を使用すると、 はセグメントタイムライン AWS Elemental MediaPackage を削除します。両方の処理により、マニフェストには、適応セットごとに 1 つの `SegmentTemplate` があり、`SegmentTimeline` はありません。次の 例を参照してください。

圧縮されたマニフェストの詳細については、「[圧縮された DASH マニフェスト](compacted.md)」を参照してください。

**重要**  
表現内のセグメントに意図的にサイズが異なるセグメントがある場合、`duration` 属性を使用しないでください。この処理は、セグメントが一貫したサイズである場合のみ有効です。

**Example**    
圧縮されたマニフェストの例を次に示します。  

```
<AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
   <SegmentTemplate timescale="30000" media="index_video_$RepresentationID$_0_$Number$.mp4?m=1543947824" initialization="index_video_$RepresentationID$_0_init.mp4?m=1543947824" startNumber="1">
     <SegmentTimeline>
       <S t="62000" d="60000" r="9"/>
     </SegmentTimeline>
   </SegmentTemplate>
   <Representation id="1" width="640" height="360" frameRate="30/1" bandwidth="749952" codecs="avc1.640029"/>
   <Representation id="2" width="854" height="480" frameRate="30/1" bandwidth="1000000" codecs="avc1.640029"/>
   <Representation id="3" width="1280" height="720" frameRate="30/1" bandwidth="2499968" codecs="avc1.640029"/>
</AdaptationSet>
```  
`duration` の属性を含む圧縮されたマニフェストの例を次に示します。  

```
<AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
   <SegmentTemplate timescale="30000" media="index_video_$RepresentationID$_0_$Number$.mp4?m=1543947824" initialization="index_video_$RepresentationID$_0_init.mp4?m=1543947824" startNumber="1" duration="60000"/>
   <Representation id="1" width="640" height="360" frameRate="30/1" bandwidth="749952" codecs="avc1.640029"/>
   <Representation id="2" width="854" height="480" frameRate="30/1" bandwidth="1000000" codecs="avc1.640029"/>
   <Representation id="3" width="1280" height="720" frameRate="30/1" bandwidth="2499968" codecs="avc1.640029"/>
</AdaptationSet>
```