Quiero hacer una transmisión en vivo. Y quiero usar HLS.
Entiendo que una transmisión en vivo de HLS es solo un archivo de lista de reproducción principal con la extensión '.m3u8' que enumera todos los archivos que se reproducirán.
Pero, para la transmisión en vivo, dado que todos los archivos no están disponibles fácilmente, se agregan a medida que ingresan.
Quiero usar S3 por ahora para alojar estos archivos y el archivo de la lista de reproducción.
Ahora, quiero actualizar el archivo de la lista de reproducción en S3. Pero en realidad reemplazará el archivo de lista de reproducción existente en lugar de simplemente actualizarlo (según esta respuesta ).
Por lo tanto, supongo que no habrá tiempo muerto durante la sustitución del archivo. Si hay un tiempo muerto, ¿cómo lo supero? ¿Es esta la manera de hacerlo o hay alguna otra manera mejor de hacerlo?
Estoy usando un servidor NodeJS, solo para tu información.
*Tiempo muerto cuando no hay archivo.
Quiero hacer una transmisión en vivo. Y quiero usar HLS.
¿Por qué HLS? ¿Por qué no DASH? DASH también está segmentado e implementado casi exactamente como HLS, pero tiene más flexibilidad en cuanto a la elección del códec y demás. Cualquiera de los dos está bien, pero si está comenzando desde cero hoy, le recomiendo DASH y el código del reproductor de referencia DASH.js, que usa Media Source Extensions.
Entiendo que una transmisión en vivo de HLS es solo un archivo de lista de reproducción principal con la extensión '.m3u8' que enumera todos los archivos que se reproducirán.
Correcto.
Pero, para la transmisión en vivo, dado que todos los archivos no están disponibles fácilmente, se agregan a medida que ingresan.
Correcto.
Ahora, quiero actualizar el archivo de la lista de reproducción en S3. Pero en realidad va a reemplazar el archivo de la lista de reproducción existente en lugar de simplemente actualizarlo.
Sí, y como señaló la otra respuesta, no hay diferencia. El archivo de la lista de reproducción se sobrescribirá con la nueva copia completa. La API de S3 no permite agregar archivos a un archivo, a menos que se realice una carga de varias partes, que en realidad no es lo mismo. En cualquier caso, su archivo de lista de reproducción para una transmisión en vivo no contendrá todos y cada uno de los segmentos de todos modos. Por lo general, solo mantiene el último puñado de segmentos en la lista de reproducción, pero depende de usted decidir cuánto retroceder.
Por lo tanto, supongo que no habrá tiempo muerto durante la sustitución del archivo.
S3 no reemplaza ese objeto hasta que se carga y almacena el nuevo objeto completo. Nunca habrá un caso en el que haya un archivo parcial. S3 no es como un sistema de archivos normal. Además, si una carga posterior falla, el objeto antiguo seguirá estando.
Los reproductores HLS y DASH leen la lista de reproducción y almacenan una tonelada de datos antes de comenzar la reproducción. (Esta es la razón por la que tienen una latencia notoriamente alta). Pasarán varios segundos antes de que el nuevo segmento se cargue y se agregue a la lista de reproducción, por lo que es importante que ya tengan datos en el búfer para reproducir. Es por eso que no tiene que preocuparse por ningún abandono, a menos que no se cargue a tiempo.
Estoy usando un servidor NodeJS, solo para tu información.
¿Es eso así? Me parece que estás usando S3... no estoy seguro de qué tiene que ver Node.js con nada de esto.