Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
duration
Atribut di SegmentTemplate
Dalam manifes DASH default, SegmentTemplate
tahan fileSegmentTimeline
. Garis waktu menjelaskan semua segmenRepresentation
, 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
danstartNumber
. 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.
Bagaimana duration
atribut bekerja
Aktifkan $duration$
atribut melalui setelan format template Segment pada titik akhir DASH, seperti yang dijelaskan dalamMembuat titik akhir DASH. Inilah yang terjadi dengan manifes:
-
Ketika AWS Elemental MediaPackage menghasilkan manifes DASH, ia menambahkan
duration
atribut keSegmentTemplate
objek, seperti yang ditunjukkan pada contoh berikut:<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).
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>
-
Perangkat pemutaran meminta segmen menggunakan URL yang ditentukan dalam
media
atribut. Di URL, itu menggantikan$Number$
variabel dengan jumlah segmen, dimulai dengan nilaistartNumber
diSegmentTemplate
untuk segmen pertama. -
Jika perangkat pemutaran Anda perlu menentukan segmen terbaru, ia menggunakan rumus ini:
((waktu jam dinding -
availabilityStartTime
)/(duration
/timescale
)) +startNumber
Perangkat pemutaran menghitung segmen terbaru dengan nilai-nilai berikut:
-
Waktu jam dinding dari perangkat pemutaran: 2018-11-16T 19:18:30 Z
-
availabilityStartTime
- Atribut dariMPD
objek manifes: 2018-11-16T 19:08:30 Z -
duration
- Atribut dariSegmentTemplate
objek manifes: 90000 -
timescale
- Atribut dariSegmentTemplate
: 30000 -
startNumber
- Atribut dariSegmentTemplate
: 175032
Perhitungan yang digunakannya adalah ((2018-11-16T 19:18:30 Z - 2018-11-16T 19:08:30 Z)/(90000/30000)) + 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
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 menggunakanduration
. Misalnya, Anda tidak dapat membuat titik akhir yang menggunakan$Time$
variabel denganSegmentTimeline
, 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
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 adaSegmentTimeline
. Lihat contoh berikut.
Untuk informasi lebih lanjut tentang manifes yang dipadatkan, lihatManifestasi DASH yang dipadatkan.
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.
- 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>