Attributo duration nel SegmentTemplate - AWS Elemental MediaPackage

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Attributo duration nel SegmentTemplate

In un manifest DASH predefinito, SegmentTemplate contiene un SegmentTimeline. La timeline descrive tutti i segmenti in Representation, inclusi la durata e l'ora di avvio. Con eventi live, AWS Elemental MediaPackage aggiunge segmenti alla timeline quando li riceve dall'encoder. Per essere a conoscenza dei nuovi segmenti disponibili, il dispositivo di riproduzione deve richiedere regolarmente un manifesto aggiornato da. MediaPackage

Se tutti i segmenti di una rappresentazione hanno la stessa durata, potete contribuire a ridurre la latenza e abbreviare il manifesto abilitando MediaPackage la rimozione degli oggetti. SegmentTimeline Al loro posto, MediaPackage aggiunge un duration attributo alle proprietà. SegmentTemplate Il dispositivo di riproduzione calcola quando i segmenti sono disponibili utilizzando duration e startNumber. Poiché il dispositivo di riproduzione non deve basarsi su un manifest aggiornato per essere a conoscenza dei segmenti, non deve richiedere costantemente aggiornamenti per mantenere la riproduzione. Per informazioni sul funzionamento dell'attributo duration, consulta le seguenti sezioni.

Come funziona l'durationattributo

Abilita l'attributo $duration$ tramite l'impostazione Segment template format (Formato segmento modello) sull'endpoint DASH, come descritto in Creazione di un endpoint DASH. Di seguito viene descritto cosa accade con il manifest:

  1. Quando AWS Elemental MediaPackage genera il manifest DASH, aggiunge l'attributo duration all'oggetto SegmentTemplate, come mostrato nell'esempio seguente:

    <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"/>

    Una sequenza temporale di segmento e singole descrizioni del segmento non sono incluse nel modello di segmento.

    Importante

    Tranne che per il segmento finale, il numero di segmenti non deve deviare più del 50% rispetto al valore della durata. Con una durata di 90000, i segmenti devono essere compresi tra 45000 e 135000 (da 1,5 a 4,5 secondi con una scala temporale di 30000).

    Di seguito è riportato un esempio di un set di adattamento che usa duration nel modello di segmento:

    <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>
  2. Il dispositivo di riproduzione richiede i segmenti utilizzando l'URL definito nell'attributo. media Nell'URL, sostituisce la variabile $Number$ con il numero del segmento, a partire dal valore del startNumber nel SegmentTemplate per il primo segmento.

  3. Se il dispositivo di riproduzione deve determinare il segmento più recente, usa questa formula:

    ((wall clock time - availabilityStartTime ) / (duration / timescale )) + startNumber

    Un dispositivo di riproduzione calcola il segmento più recente con i seguenti valori:

    • Ora dell'orologio da parete dal dispositivo di riproduzione: 2018-11-16T 19:18:30 Z

    • availabilityStartTime- Attributo dell'MPDoggetto del manifesto: 2018-11-16T 19:08:30 Z

    • duration- Attributo dell'SegmentTemplateoggetto del manifesto: 90000

    • timescale- Attributo tratto daSegmentTemplate: 30000

    • startNumber- Attributo tratto dalSegmentTemplate: 175032

    Il calcolo utilizzato è ((2018-11-16T19:18:30Z - 2018-11-16T19:08:30Z) / (90000/30000)) + 175032

    Questo calcolo diventa quindi (Tempo trascorso di 600 secondi)/(Durate dei segmenti di 3 secondi) = 200 segmenti trascorsi. L'aggiunta di tali segmenti al segmento iniziale 175032 rende il segmento più recente 175232.

durationLimitazioni degli attributi

Per garantire la riproduzione corretta ed evitare problemi con durate di segmenti in conflitto, AWS Elemental MediaPackage impone le seguenti limitazioni per l'attributo duration:

  • Puoi abilitare la caratteristica solo quando crei l'endpoint.

    Non puoi modificare l'endpoint per aggiungere in seguito l'attributo duration ai manifest DASH. Questo include la modifica da un formato modello segmento a uno che utilizza duration. Ad esempio, non puoi creare un endpoint che utilizza la variabile $Time$ con SegmentTimeline e quindi modificare l'endpoint per utilizzare la variabile $Number$ con duration.

  • Devi mantenere il valore segment duration (durata segmento) impostato al momento della creazione dell'endpoint.

    Non puoi modificare l'endpoint per modificare la durata del segmento.

  • Devi produrre manifest DASH a singolo periodo da endpoint che utilizzano duration.

    Non puoi utilizzare DASH multi-periodo con l'attributo duration.

  • Il tuo flusso di ingest deve utilizzare una cadenza di segmentazione regolare.

  • Non puoi utilizzare una lunghezza variabile dei segmenti nel flusso di inserimento. Ad esempio, il risultato di una segmentazione relativa a SCTE-35.

durationAttributo con manifesti DASH compattati

La combinazione di manifest compattati con l'attributo duration ridurrà ulteriormente le dimensioni del manifest, ma non di molto. I manifest compattati dispongono di un SegmentTemplate e SegmentTimeline per set di adattamento. Quando utilizzi l'attributo duration, AWS Elemental MediaPackage rimuove la timeline del segmento. Con entrambi i trattamenti, il manifest dispone di un SegmentTemplate per set di adattamento e nessun SegmentTimeline. Fare riferimento agli esempi riportati di seguito.

Per ulteriori informazioni sui manifest compattati, consulta Manifesti DASH compatti.

Importante

Se i segmenti in una rappresentazione dispongono intenzionalmente di segmenti di varie dimensioni, non utilizzare l'attributo duration. Questo trattamento funziona solo quando le dimensioni dei segmenti sono coerenti.

Di seguito è riportato un esempio di manifesto compatto:
<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>
Di seguito è riportato un esempio di manifesto compatto con l'durationattributo:
<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>