Я создал сегменты фиксированной длины для длинного видео MP4 с использованием Mp4Box. Mp4Box создает мета-info файл mv_init.mp4
и сегменты, такие как mv_1.m4s
, mv_2.m4s
,... Я передаю видео с помощью HTML5 Media Source Extensions, и потоковая передача работает правильно.
Проблема в том, что Я не могу использовать функцию поиска времени для своего проигрывателя HTML5. Когда пользователь использует поисковую панель для поиска другой точки времени, мне нужно получить правильный файл сегмента (mv_{number}.m4s
) для этого currentTime
.
Например:
- продолжительность видео: 2 часа
- размер сегмента: 10 секунд
- пользователь ищет время: 25 минут
25 минут = 25 × 60 секунд = 1500 секунд. Поскольку каждый сегмент имеет 10 секунд, мне нужен номер сегмента 1500/10 = 150. Необходимый файл сегмента mv_150.m4s
.
Вычисление, по-видимому, кажется правильным, но проигрыватель HTML5, а затем загружает еще много файлов после mv_150.m4s
, прежде чем он продолжит поток.
Как правильно рассчитать номер файла сегмента, чтобы после поиска потоковая передача выполнялась гладко, без загрузки каких-либо дополнительных файлов?
Чтобы создать сегменты видео MP4, я использовал следующую команду:
MP4Box -dash 10000 -out video.mpd -dash-profile live -segment-name mv_ -rap video.mp4