Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Atributo duration
de SegmentTemplate
En los manifiestos DASH predeterminados, SegmentTemplate
contiene un objeto SegmentTimeline
. La línea temporal describe todos los segmentos de Representation
, incluida su duración y su hora de inicio. Cuando hay eventos en directo, AWS Elemental MediaPackage va añadiendo los segmentos a la escala de tiempo a medida que los recibe del codificador. Para estar al tanto de los nuevos segmentos disponibles, el dispositivo de reproducción debe solicitar periódicamente un manifiesto actualizado de MediaPackage.
Si todos los segmentos de una representación tienen la misma duración, puede ayudar a reducir la latencia y disminuir el tamaño del manifiesto habilitando MediaPackage para eliminar los objetos SegmentTimeline
. En su lugar, MediaPackage agrega un atributo duration
a las propiedades de SegmentTemplate
. El dispositivo de reproducción calcula cuándo van a estar disponibles los segmentos utilizando duration
y startNumber
. Como el dispositivo de reproducción no necesita un manifiesto actualizado para obtener información sobre los segmentos, no tiene que solicitar actualizaciones constantemente para continuar con la reproducción. Para obtener más información sobre el funcionamiento del atributo duration
, consulte las siguientes secciones.
Cómo funciona el atributo duration
Habilite el atributo $duration$
a través de la opción Segment template format (Formato de la plantilla de segmentos) del punto de enlace DASH, tal y como se describe en Creación de un punto de conexión DASH. Esto es lo que ocurre con el manifiesto:
-
Cuando AWS Elemental MediaPackage genera el manifiesto DASH, añade el atributo
duration
al objetoSegmentTemplate
, tal y como se muestra en el siguiente ejemplo:<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"/>
En la plantilla, no se incluyen líneas temporales ni descripciones individuales de los segmentos.
importante
A excepción del segmento final, los segmentos no deben desviarse más de un 50 % respecto del valor de la duración. Con una duración de 90 000, los segmentos deben estar entre 45 000 y 135 000 (entre 1,5 y 4,5 segundos, con una escala temporal de 30 000).
A continuación, se muestra un ejemplo de un conjunto de adaptación que utiliza el segmento
duration
de la plantilla de segmentos:<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>
-
El dispositivo de reproducción solicita los segmentos utilizando la URL definida en el atributo
media
. En la URL, la variable$Number$
se sustituye por el número del segmento, empezando por el valor destartNumber
del objetoSegmentTemplate
del primer segmento. -
Si el dispositivo de reproducción debe determinar el segmento más reciente, utilice esta fórmula:
((hora del reloj -
availabilityStartTime
) / (duration
/timescale
)) +startNumber
Un dispositivo de reproducción calcula el segmento más reciente con los siguientes valores:
-
Hora del reloj del dispositivo de reproducción: 2018-11-16T19:18:30Z
-
Atributo
availabilityStartTime
del objetoMPD
del manifiesto: 2018-11-16T19:08:30Z -
Atributo
duration
del objetoSegmentTemplate
del manifiesto: 90000 -
Atributo
timescale
deSegmentTemplate
: 30000 -
Atributo
startNumber
deSegmentTemplate
: 175032
El cálculo que utiliza es ((2018-11-16T19:18:30Z - 2018-11-16T19:08:30Z) / (90000/30000)) + 175032
Esto se convierte en (600 segundos de tiempo transcurrido) / (3 segundos de duración de cada segmento) = 200 segmentos transcurridos. Al añadir esos segmentos al segmento 175032 inicial, el segmento 175232 se convierte en el más reciente.
-
Limitaciones del atributo duration
Para garantizar que la reproducción se realiza correctamente y evitar conflictos con las duraciones de los segmentos, AWS Elemental MediaPackage establece las siguientes limitaciones en el atributo duration
:
-
La característica solamente puede habilitarse cuando se crea el punto de enlace.
El punto de enlace no se puede modificar para añadir después el atributo
duration
a los manifiestos DASH. Esta limitación impide que se pueda cambiar el formato de una plantilla de segmentos por otro que utiliceduration
. Por ejemplo, no puede crear un punto de enlace que utilice la variable$Time$
conSegmentTimeline
y editar después el punto de enlace para que utilice la variable$Number$
conduration
. -
Debe mantener el valor de segment duration (duración del segmento) que se estableció al crear el punto de enlace.
No se puede editar el punto de enlace para modificar la duración del segmento.
-
En los puntos de enlace que utilizan
duration
, debe crear manifiestos de DASH con un solo periodo..No puede utilizar DASH de varios periodos con el atributo
duration
. -
Su flujo de ingesta debe utilizar una cadencia de segmentación normal.
-
No puede usar una longitud de segmento variable en el flujo de ingesta. Por ejemplo, como resultado de una segmentación relacionada con SCTE-35.
Atributo duration
con manifiestos DASH compactados
Si se combinan manifiestos compactados con el atributo duration
, se reducirá un poco el tamaño del manifiesto, aunque no mucho. Los manifiestos compactados tienen un objeto SegmentTemplate
y un objeto SegmentTimeline
en cada conjunto de adaptación. Cuando se utiliza el atributo duration
, AWS Elemental MediaPackage elimina la línea temporal del segmento. En los dos casos, el manifiesto tiene un objeto SegmentTemplate
en cada conjunto de adaptación, pero no un objeto SegmentTimeline
. Vea los siguientes ejemplos.
Para obtener más información acerca de los manifiestos compactados, consulte Manifiestos de DASH compactos.
importante
Si los segmentos de una representación tienen diferentes tamaños de forma intencionada, no utilice el atributo duration
. Este tratamiento solamente funciona cuando los segmentos tienen un tamaño coherente.
- A continuación, se muestra un ejemplo de un manifiesto compactado.
-
<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>
- A continuación, se muestra un ejemplo de un manifiesto compactado con el atributo
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>