Tengo un pequeño clip experimental a continuación:
http://d3fnzeq4kk32oq.cloudfront.net/802/test_1.m3u8
El problema al que me enfrento es que después de unos segundos, el vídeo se cuelga.
Agradecería si alguien pudiera ayudarme
- Identificar el problema
- Cualquier solución
- Cualquier herramienta para detectarlo o solucionarlo.
Respuesta1
Así que no hay problemas. Este m3u8 apunta a los últimos segundos de lo que fue una transmisión en 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
HLS divide el vídeo en segmentos. Esta lista de reproducción comienza en el segmento número 54675 y termina en 54677. #EXT-X-ENDLIST
Le dice al reproductor que deje de reproducir, ya que nos hemos quedado sin segmentos.
Mientras esta transmisión estaba en vivo, el m3u8 se habría estado actualizando.
https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-12
Respuesta2
El .m3u8
archivo no es unclip de vídeo; es untipo de manifiestoarchivo que se utiliza en la transmisión de video HTTP. Especifica la URL de MPEG2-TS
segmentos de vídeo codificados que suelen tener una duración de unos 10 minutos.
- El servidor envía este
.m3u8
archivo al cliente. - Luego, el cliente extrae la URL del
.ts
segmento de video y luego muestra el segmento de video.
En condiciones normales de transmisión en vivo, .m3u8
se envía un nuevo archivo desde el servidor al cliente cada 10 minutos para que sepa la URL del siguiente segmento de video de 10 minutos. Cuando no hay más segmentos, o el evento de transmisión en vivo ha terminado, el servidor envía un .m3u8
archivo con la #EXT-X-ENDLIST
directiva, que le dice al cliente que no habrá más segmentos, como szatmary explicó anteriormente.
Por lo tanto, su video se "cuelga" como lo describió, ya que no hay más segmentos disponibles.
Arreglar:
No es necesaria ninguna solución porque el servidor no ha proporcionado más segmentos.
Recursos:
La mejor herramienta para detectar esto es un editor comovi(vim) que le permitirá ver las directivas en el .m3u8
archivo para que pueda verificarlas #EXT-X-ENDLIST
. O simplemente use cat
o tail
para mostrar el contenido del .m3u8
archivo.
El enlace al borrador del IETF sobre HTTP Live Streaming que proporcionó szatmary es muy informativo y explica todas las directivas que se utilizan en el .m3u8
archivo.
Dado que Apple desarrolló y definió este protocolo, esta es la mejor fuente de información: https://developer.apple.com/streaming/
Se pueden encontrar recursos adicionales aquí: http://en.wikipedia.org/wiki/HTTP_Live_Streaming