Как избежать рассинхрона субтитров при динамической подгрузке в HTML5 video?
Использую HTML5 video с субтитрами (SRT - VTT), которые можно переключать во время воспроизведения. При смене на лету появляется рассинхрон по таймингам +1-2 сек, особенно если видео уже проигрывается.
Пробовал пересоздавать track, addTextTrack(), ставить видео на паузу - результат нестабильный в разных браузерах. Это особенность TextTrack? Есть ли корректный способ обновлять субтитры без рассинхрона?
Это особенность браузеров: TextTrack привязывается к таймлайну в момент добавления, поэтому при смене во время play() тайминги могут плыть. Обычно либо пересоздают track на паузе с возвратом currentTime, либо вообще отказываются от и синхронизируют субтитры вручную через timeupdate, так стабильнее. Во многих обучающих сервисах с интерактивными субтитрами используют именно этот подход.
Субтитры подгружаются строго по временным меткам - никакого рассинхрона. От плеера идет метка, скрипт выбирает нужный субтитр и показывает строго до его закрывающей метки(просто математика).