У меня есть 2 .m3u8 файла для потоковой передачи VOD (.ts из внешних ссылок), и я хочу объединить оба, но для симуляции потоковой передачи.
Это 2 .m3u8 файла, которые мой сервер генерирует в двух разных вызовах(2 разных времени).Проблема в том, что для второго #EXT-X-MEDIA-SEQUENCE:5
это должно быть 4.
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:7
#EXTINF:6,
https://.../5ZzHEGriq_medium_00001.ts
#EXTINF:6,
https://.../5ZzHEGriq_medium_00002.ts
#EXTINF:6,
https://.../5ZzHEGriq_medium_00003.ts
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:5
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:7
#EXTINF:6,
https://.../5ZzHEGriq_medium_00002.ts
#EXTINF:6,
https://.../5ZzHEGriq_medium_00003.ts
#EXTINF:6,
https://.../5ZzHEGriq_medium_00004.ts
Я использую таймер на стороне сервера, чтобы решить, какой последний фрагмент должен быть возвращен.Проблема в том, что клиент иногда делает запрос рано (в этом случае secuencia 1-2-3 меняется на 2-3-4 или 3-4-5), а другие в последнее время (1-2-3 до 5-6-7).например).
Я думаю, что лучшим вариантом будет отслеживать текущую последовательность 1-2-3 и вернуть для следующего изменения 3-4-5, но как это сделать без информации от клиента.
Я использую эту функцию для проверки текущего .ts
f(elapsedTime) {
return fragments.findIndex(fragment => (fragment.offset + fragment.duration >= elapsedTime));
}
, где elapsedTime из глобального таймера, fragments
- это объект с информацией о файлах .ts.
Как яСказано, проблема в том, когда браузер делает запрос рано или поздно.Я только установил EXT-X-MEDIA-SEQUENCE = EXT-X-MEDIA-SEQUENCE + 2
(так как я всегда возвращал список файлов 3 .ts).