Tenho um pequeno clipe experimental abaixo:
http://d3fnzeq4kk32oq.cloudfront.net/802/test_1.m3u8
O problema que estou enfrentando é que depois de alguns segundos o vídeo trava.
Eu apreciaria se alguém pudesse me ajudar
- Identifique o problema
- Qualquer correção
- Qualquer ferramenta para detectar ou consertar
Responder1
Eu não tenho problemas. Este m3u8 está apontando para os últimos segundos do que foi uma transmissão ao vivo.
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:54675
#EXTINF:10.0,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0122_54675.ts
#EXTINF:2.188,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0123_54676.ts
#EXTINF:10.0,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0123_54677.ts
#EXT-X-ENDLIST
O HLS divide o vídeo em segmentos. Esta lista de reprodução começa no segmento número 54675 e termina em 54677. #EXT-X-ENDLIST
diz ao jogador para parar de jogar, pois estamos sem segmentos.
Enquanto esta transmissão estava ao vivo, o m3u8 estaria sendo atualizado.
https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-12
Responder2
O .m3u8
arquivo não é umvideoclipe; é umtipo de manifestoarquivo que é usado no streaming de vídeo HTTP. Ele especifica o URL de MPEG2-TS
segmentos de vídeo codificados que geralmente têm cerca de 10 minutos de duração.
- O servidor envia este
.m3u8
arquivo para o cliente - Em seguida, o cliente extrai o URL para o
.ts
segmento de vídeo e exibe o segmento de vídeo.
Em condições normais de transmissão ao vivo, um novo .m3u8
arquivo é enviado do servidor para o cliente a cada 10 minutos para que ele saiba a URL do próximo segmento de vídeo de 10 minutos. Quando não há mais segmentos, ou o evento de transmissão ao vivo termina, o servidor envia um .m3u8
arquivo com a #EXT-X-ENDLIST
diretiva, que informa ao cliente que não haverá mais segmentos, conforme szatmary explicado acima.
Assim, seu vídeo "trava" conforme você descreveu, pois não há mais segmentos disponíveis.
Consertar:
Não há necessidade de correção porque o servidor não forneceu mais segmentos.
Recursos:
A melhor ferramenta para detectar isso é um editor comovi(vim) que permitirá que você veja as diretivas no .m3u8
arquivo para que você possa verificar a #EXT-X-ENDLIST
diretiva. Ou apenas use cat
ou tail
para mostrar o conteúdo do .m3u8
arquivo.
O link para o rascunho da IETF sobre HTTP Live Streaming fornecido por szatmary é muito informativo e explica todas as diretivas usadas no .m3u8
arquivo.
Como a Apple desenvolveu e definiu este protocolo, esta é a melhor fonte de informações: https://developer.apple.com/streaming/
Recursos adicionais podem ser encontrados aqui: http://en.wikipedia.org/wiki/HTTP_Live_Streaming