Ответ 1
Я исследовал этот вопрос и нашел истинную причину. Калуляция для загрузки сегментов была правильной. Проблема заключалась в ключевом интервале кадров в видеофайле. Ключевой кадр - это кадр в видео, с которого видео может впоследствии загружаться и запускаться с этой точки. Поэтому в моем случае мне нужно вставить ключевой кадр в начале каждого сегмента. Поэтому, когда мы ищем видео в разных временных положениях, следующий загруженный сегмент содержит ключевой кадр в начале его.
Ключевые кадры в видеофайле можно настроить с помощью FFMPEG. Так, например, если у нас есть видео с сегментами 5 секунд, мы должны создать ключевой кадр с интервалом 5 секунд, используя ffmpeg. Еще одним важным моментом при создании ключевых кадров является просмотр FRAME RATE видео. Видео должно иметь фиксированную частоту кадров, чтобы мы могли точно рассчитать положение ключевого кадра.
Пример:
Video File: gladiator.mp4
Segment Size: 5 seconds
Нет, мы устанавливаем FRAME RATE и KEY FRAME INTERVAL с использованием FFMPEG
ffmpeg -i gladiator.mp4 -x264-params keyint = 120: min-keyint = 120: no-scenecut = 1 -r 24 gladiator-output.mp4
keyint=120 i.e; 24 fps * 5 seconds = 120
И теперь мы создаем сегментные файлы, используя Mp4Box
MP4Box -dash 5000 -frag 5000 -out gladiator.mpd -dash-profile on-demand -segment-name mv_ gladiator-output.mp4
Таким образом, он будет создавать сегменты, такие как mv_1, mv_2,.. и так далее, имея ключевые кадры в начале каждого файла сегмента.