

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Format templat segmen manifes DASH
<a name="segtemp-format"></a>

Kemampuan untuk memilih format template segmen DASH tersedia hanya dengan alur kerja langsung di AWS Elemental MediaPackage.

Bagian berikut menjelaskan bagaimana Anda dapat memodifikasi `SegmentTemplate` objek dalam manifes DASH agar lebih sesuai dengan persyaratan perangkat pemutaran Anda.

**Topics**
+ [`media`Atribut di `SegmentTemplate`](segtemp-format-media.md)
+ [`duration`Atribut di `SegmentTemplate`](segtemp-format-duration.md)

# `media`Atribut di `SegmentTemplate`
<a name="segtemp-format-media"></a>

`media`Atribut dalam `SegmentTemplate` properti mendefinisikan URL tempat perangkat pemutaran mengirim permintaan segmen. Secara default, URL ini menggunakan `$Number$` variabel untuk mengidentifikasi segmen tertentu yang diminta. Ketika perangkat pemutaran meminta segmen, itu menggantikan variabel dengan pengenal nomor segmen. Untuk segmen pertama dalam representasi, ganti pengenal ini dengan nilai dari `startNumber` dari `SegmentTemplate` properti. Setiap segmen tambahan bertambah satu.

Beberapa pemain menavigasi segmen dengan lebih baik ketika segmen diidentifikasi, bukan oleh stempel waktu saat pemutaran tersedia. Untuk mendukung kasus penggunaan ini, MediaPackage gunakan `$Time$` variabel bukan `$Number$` di URL `media` atribut. Ketika perangkat pemutaran meminta segmen, itu menggantikan variabel dengan waktu mulai ketersediaan segmen. Waktu mulai ini diidentifikasi dalam `t` nilai properti segmen (`S`) di `SegmentTimeline` objek. Sebagai contoh, lihat [Cara Kerjanya](#how-stemp-works).

## Bagaimana `$Time$` variabel bekerja
<a name="how-stemp-works"></a>

Aktifkan `$Time$` variabel melalui setelan **format template Segmen** pada titik akhir DASH, seperti yang dijelaskan dalam[Membuat titik akhir DASH](endpoints-dash.md). AWS Elemental MediaPackage mengambil tindakan berikut:

1.  Ketika MediaPackage menghasilkan manifes DASH, ia menggunakan `$Time$` variabel dalam `media` nilai `SegmentTemplate` objek, seperti yang ditunjukkan pada contoh berikut:  
**Example**  

   ```
   <SegmentTemplate timescale="30" media="index_video_1_0_$Time$.mp4?m=1122792372" initialization="index_video_1_0_init.mp4?m=1122792372" startNumber="2937928">
   ```

1. Saat perangkat pemutaran meminta segmen, perangkat akan menggunakan URL yang ditentukan dalam `media` atribut dan menggantikan variabel dengan waktu mulai ketersediaan segmen yang diminta.
**penting**  
Nilai yang menggantikan variabel harus merupakan `t` nilai yang tepat dari suatu segmen. Jika permintaan menggunakan stempel waktu arbitrer, MediaPackage tidak mencari segmen terdekat.  
**Example**  

   Berikut ini adalah contoh template segmen dari representasi. Ini menggunakan `$Time$` variabel:

   ```
   <SegmentTemplate timescale="30000" media="155_video_1_2_$Time$.mp4?m=1545421124" initialization="155_video_1_2_init.mp4?m=1545421124" startNumber="710">
     <SegmentTimeline>
          <S t="255197799" d="360360" r="8"/>
          <S t="258441039" d="334334"/>
     </SegmentTimeline>
   </SegmentTemplate>
   ```

   URL permintaan untuk segmen pertama adalah**155\$1video\$11\$12\$1*255197799*.mp4**. Dengan durasi 360360, permintaan segmen berikutnya adalah**155\$1video\$11\$12\$1*255558159*.mp4**, dan seterusnya melalui segmen kesembilan. 

   Permintaan segmen terakhir adalah**155\$1video\$11\$12\$1*258441039*.mp4**.

# `duration`Atribut di `SegmentTemplate`
<a name="segtemp-format-duration"></a>

Dalam manifes DASH default, `SegmentTemplate` tahan file`SegmentTimeline`. Garis waktu menjelaskan semua segmen`Representation`, termasuk durasi dan waktu mulai mereka. Dengan acara langsung, AWS Elemental MediaPackage tambahkan segmen ke timeline saat menerimanya dari encoder Anda. Untuk mengetahui segmen yang baru tersedia, perangkat pemutaran harus secara teratur meminta manifes yang diperbarui dari MediaPackage.

Jika semua segmen dalam representasi memiliki durasi yang sama, Anda dapat membantu mengurangi latensi dan mempersingkat manifes dengan memungkinkan MediaPackage untuk menghapus objek. `SegmentTimeline` Di tempat mereka, MediaPackage menambahkan `duration` atribut ke `SegmentTemplate` properti. Perangkat pemutaran menghitung kapan segmen tersedia dengan menggunakan `duration` dan`startNumber`. Karena perangkat pemutaran tidak harus bergantung pada manifes yang diperbarui untuk mengetahui tentang segmen, perangkat ini tidak harus terus-menerus meminta pembaruan untuk mempertahankan pemutaran. Untuk informasi tentang cara kerja `duration` atribut, lihat bagian berikut.

**Topik**
+ [Bagaimana `duration` atribut bekerja](#how-stemp-dur-works)
+ [`duration`Atribut dengan manifes DASH yang dipadatkan](#stemp-dur-combos)

## Bagaimana `duration` atribut bekerja
<a name="how-stemp-dur-works"></a>

Aktifkan `$duration$` atribut melalui setelan **format template Segment** pada titik akhir DASH, seperti yang dijelaskan dalam[Membuat titik akhir DASH](endpoints-dash.md). Inilah yang terjadi dengan manifes: 

1. Ketika AWS Elemental MediaPackage menghasilkan manifes DASH, ia menambahkan `duration` atribut ke `SegmentTemplate` objek, seperti yang ditunjukkan pada contoh berikut:  
**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"/>
   ```

   Garis waktu segmen dan deskripsi segmen individu tidak termasuk dalam templat segmen.
**penting**  
Kecuali untuk segmen akhir, segmen harus tidak lebih dari 50% deviasi dari nilai durasi. Dengan durasi 90000, segmen harus antara 45000 dan 135000 (1,5 hingga 4,5 detik dengan skala waktu 30000).   
**Example**  

   Berikut ini adalah contoh dari set adaptasi yang menggunakan `duration` dalam template segmen:

   ```
   <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. Perangkat pemutaran meminta segmen menggunakan URL yang ditentukan dalam `media` atribut. Di URL, itu menggantikan `$Number$` variabel dengan jumlah segmen, dimulai dengan nilai `startNumber` di `SegmentTemplate` untuk segmen pertama.

1. Jika perangkat pemutaran Anda perlu menentukan segmen terbaru, ia menggunakan rumus ini:

   ((waktu jam dinding -`availabilityStartTime`)/(`duration`/`timescale`)) \$1 `startNumber`  
**Example**  

   Perangkat pemutaran menghitung segmen terbaru dengan nilai-nilai berikut:
   + Waktu jam dinding dari perangkat pemutaran: 2018-11-16T 19:18:30 Z
   + `availabilityStartTime`- Atribut dari `MPD` objek manifes: 2018-11-16T 19:08:30 Z
   + `duration`- Atribut dari `SegmentTemplate` objek manifes: 90000
   + `timescale`- Atribut dari`SegmentTemplate`: 30000
   + `startNumber`- Atribut dari`SegmentTemplate`: 175032

   Perhitungan yang digunakannya adalah ((2018-11-16T 19:18:30 Z - 2018-11-16T 19:08:30 Z)/(90000/30000)) \$1 175032

   Perhitungan ini kemudian menjadi (600 detik waktu berlalu)/(durasi segmen 3 detik) = 200 segmen yang telah berlalu. Menambahkan segmen tersebut ke segmen awal 175032 membuat segmen terbaru 175232.

## `duration`Keterbatasan atribut
<a name="stemp-limitations"></a>

Untuk memastikan pemutaran yang tepat dan membantu mencegah masalah dengan durasi segmen yang bertentangan, AWS Elemental MediaPackage menerapkan batasan berikut untuk atribut: `duration`
+ Anda dapat mengaktifkan fitur hanya ketika Anda membuat titik akhir. 

  Anda tidak dapat mengubah titik akhir untuk menambahkan `duration` atribut ke manifes DASH nanti. Ini termasuk mengubah dari satu format template segmen ke format yang menggunakan`duration`. Misalnya, Anda tidak dapat membuat titik akhir yang menggunakan `$Time$` variabel dengan`SegmentTimeline`, dan kemudian mengedit titik akhir untuk menggunakan `$Number$` variabel dengan. `duration`
+ Anda harus menyimpan nilai **durasi segmen** yang Anda tetapkan saat membuat titik akhir.

  Anda tidak dapat mengedit titik akhir untuk mengubah durasi segmen.
+ Anda harus menghasilkan manifes DASH periode tunggal dari titik akhir yang digunakan`duration`.

  Anda tidak dapat menggunakan DASH multi-periode dengan `duration` atribut.
+ Aliran konsumsi Anda harus menggunakan irama segmentasi biasa.
+ Anda tidak dapat menggunakan panjang segmen variabel dalam aliran ingest. Misalnya, menghasilkan segmentasi terkait SCTE-35.

## `duration`Atribut dengan manifes DASH yang dipadatkan
<a name="stemp-dur-combos"></a>

Menggabungkan manifes yang dipadatkan dengan `duration` atribut akan semakin mengurangi ukuran manifes, tetapi tidak banyak. Manifes yang dipadatkan memiliki satu `SegmentTemplate` dan `SegmentTimeline` per set adaptasi. Saat Anda menggunakan `duration` atribut, AWS Elemental MediaPackage hapus timeline segmen. Dengan kedua perawatan, manifes memiliki satu `SegmentTemplate` per set adaptasi, dan tidak ada`SegmentTimeline`. Lihat contoh berikut.

Untuk informasi lebih lanjut tentang manifes yang dipadatkan, lihat[Manifestasi DASH yang dipadatkan](compacted.md).

**penting**  
Jika segmen dalam representasi sengaja memiliki ukuran segmen yang berbeda-beda, jangan gunakan `duration` atribut tersebut. Perawatan ini hanya bekerja ketika segmen adalah ukuran yang konsisten.

**Example**    
Berikut ini adalah contoh manifes yang dipadatkan:  

```
<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>
```  
Berikut ini adalah contoh manifes yang dipadatkan dengan `duration` atribut:  

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