As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Atributo duration
no SegmentTemplate
Em um manifesto DASH padrão, SegmentTemplate
contém um SegmentTimeline
. A linha do tempo descreve todos os segmentos na Representation
, incluindo a duração e o horário de início. Com eventos ao vivo, o AWS Elemental MediaPackage adiciona segmentos à linha do tempo à medida que os recebe de seu codificador. Para estar ciente dos segmentos recém-disponibilizados, o dispositivo de reprodução deve solicitar um manifesto atualizado regularmente do MediaPackage.
Se todos os segmentos em uma representação tiverem a mesma duração, você poderá ajudar a reduzir a latência e encurtar o manifesto permitindo que o MediaPackage remova os objetos SegmentTimeline
. Em seu lugar, o MediaPackage adicionará um atributo duration
às propriedades de SegmentTemplate
. O dispositivo de reprodução calcula quando os segmentos estão disponíveis usando duration
e startNumber
. Como o dispositivo de reprodução não precisa contar com um manifesto atualizado para saber sobre segmentos, ele não precisa solicitar atualizações constantemente para manter a reprodução. Para obter informações sobre como o atributo duration
funciona, consulte as seções a seguir.
Funcionamento do atributo duration
Habilite o atributo $duration$
por meio da configuração Segment template format (Formato do modelo de segmento) no endpoint DASH, conforme descrito em Como criar um endpoint DASH. Isso é o que acontece com o manifesto:
-
Quando o AWS Elemental MediaPackage gera o manifesto DASH, ele adiciona o atributo
duration
ao objetoSegmentTemplate
, conforme mostrado no exemplo a seguir:<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"/>
A linha do tempo de um segmento e as descrições individuais de segmentos não são incluídas no modelo de segmento.
Importante
Com exceção do último segmento, os segmentos não devem ter um desvio maior que 50% em relação ao valor da duração. Com uma duração de 90000, os segmentos devem ter entre 45000 e 135000 (1,5 a 4,5 segundos com uma escala de tempo de 30000).
Veja a seguir um exemplo de uma definição de adaptação que usa
duration
no modelo de 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>
-
O dispositivo de reprodução solicita segmentos usando o URL definido no atributo
media
. Na URL, ele substitui a variável$Number$
pelo número do segmento, começando com o valor dostartNumber
noSegmentTemplate
para o primeiro segmento. -
Se seu dispositivo de reprodução precisar determinar o segmento mais recente, ele usará esta fórmula:
((hora do relógio -
availabilityStartTime
) / (duration
/timescale
)) +startNumber
Um dispositivo de reprodução está calculando o segmento mais recente com os seguintes valores:
-
Hora do relógio de referência do dispositivo de reprodução: 2018-11-16T19:18:30Z
-
availabilityStartTime
: atributo do objetoMPD
do manifesto: 2018-11-16T19:08:30Z -
duration
: atributo do objetoSegmentTemplate
do manifesto: 90000 -
timescale
: atributo deSegmentTemplate
: 30000 -
startNumber
: atributo deSegmentTemplate
: 175032
O cálculo que ele usa é ((2018-11-16T19:18:30Z - 2018-11-16T19:08:30Z) / (90000/30000)) + 175032
Esse cálculo, por sua vez, torna-se (tempo decorrido de 600 segundos) / (durações de segmentos de 3 segundos) = 200 segmentos decorridos. A adição desses segmentos ao segmento de início 175032 torma o segmento 175232 o mais recente.
-
Limitações do atributo duration
Para garantir a reprodução adequada e ajudar a evitar problemas com durações de segmento conflitantes, o AWS Elemental MediaPackage impõe as seguintes limitações ao atributo duration
:
-
Você pode habilitar o recurso somente ao criar o endpoint.
Você não pode modificar o endpoint posteriormente para adicionar o atributo
duration
a seus manifestos DASH. Isso inclui a alteração de um formato de modelo de segmento para um formato que usaduration
. Por exemplo, você não pode criar um endpoint que usa a variável$Time$
comSegmentTimeline
e depois editar o endpoint para usar a variável$Number$
comduration
. -
Você deve manter o valor de segment duration (duração do segmento) que você define ao criar o endpoint.
Você não pode editar o endpoint para modificar a duração do segmento.
-
Você deve gerar manifestos DASH de período único dos endpoints que usam
duration
.Você não pode usar DASH de vários períodos com o atributo
duration
. -
Seu fluxo de ingestão deve usar uma cadência de segmentação regular.
-
Você não pode usar um comprimento de segmento variável no fluxo de ingestão. Por exemplo, um que seja resultante de uma segmentação relacionada ao SCTE-35.
Atributo duration
com manifestos DASH compactados
Combinar manifestos compactados com o atributo duration
reduzirá ainda mais o tamanho do manifesto, mas não muito. Os manifestos compactados têm um SegmentTemplate
e SegmentTimeline
por definição de adaptação. Quando você usa o atributo duration
, o AWS Elemental MediaPackage remove a linha do tempo do segmento. Com os dois tratamentos, o manifesto tem um SegmentTemplate
por definição de adaptação, e nenhum SegmentTimeline
. Veja os exemplos a seguir.
Para obter mais informações sobre manifestos compactados, consulte Manifestos DASH compactados.
Importante
Se os segmentos em uma representação tiverem tamanhos de segmentos variados intencionalmente, não use o atributo duration
. Esse tratamento funciona somente quando os segmentos são de um tamanho consistente.
- Veja a seguir um exemplo de um manifesto 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>
- Veja a seguir um exemplo de um manifesto compactado com o 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>