HLS является адаптивным протоколом потоковой передачи данных.
Эти протоколы включают в себя сервер, имеющий несколько разных копий или кодировок видео с разной скоростью передачи битов, все разбитые, например, на 2 секунды.
Клиент (устройство, воспроизводящее видео) запрашивает куски с сервера в зависимости от доступной полосы пропускания в то время. Например, он может начинаться с запроса первых двух секунд от самой младшей битрейтной копии видео, и если это будет загружаться нормально, тогда запросите следующие 2 секунды с следующего максимального битрейта и так далее, пока он не достигнет максимального битрейта или не увидит задержка загрузки куска. Если полоса пропускания уменьшается во время воспроизведения в любое время, она может запросить следующий фрагмент с более низкого битрейта.
Итак, для случая вам необходимо загрузить видео на сервер, создать несколько кодировок видеосигнала, разбить их, а затем упаковать их в нужном вам потоковом формате (HLS в вашем случае).
Это не так просто, поэтому вам, вероятно, стоит взглянуть на потоковые серверы и службы, чтобы понять, может ли быть проще всего построить или использовать один из этих серверов/служб. Вот некоторые примеры: