я хотел бы измерить пропущенное время во время воспроизведения видео, если пользователь пропустил какое-то время.
Использование video.currentTime
Сначала это выглядит довольно тривиально
Listen to seeking and get the currentTime A
Listen to seekend and get the currentTime B
B - A = Seeked Time
Когда я делаю это в Chrome, результат равен 0. Почему? Если вы послушаете timeupdate TU, это станет совершенно очевидным. Упрощенная последовательность:
Press Play
TU: 1
TU: 2
TU: 3 // now i use the mouse to seek forward to 19
TU: 19
//chrome & ff fire pause in between, ie not
Seek Start: 19
TU: 19
Seek End: 19
TU: 19
//chrome & ff fire play, ie not
TU: 20
...
Я знаю, что могу играть грязно и сохранять текущее время где-нибудь, но ненадежным способом ;-)
Использование TimeRanges video.played
Я могу использовать TimeRanges для расчета количества времени, которое было разыскано/пропущено. Но проблема в том, что TimeRanges приходят в упорядоченной и нормализованной форме в виде списка. Так что, если пользователь прыгает вперед, диапазоны становятся объединенными и упорядоченными => ненадежными для точного отслеживания.
Есть ли более простой и менее сложный подход, который я просто не вижу?