2013-12-12 3 views
0

В нем есть веб-страница с видео HTML5. Когда пользователь нажимает кнопку «Пуск» или когда он перемещается по временной шкале, начинается видео (либо с начала, либо с выбранной позиции). Но это происходит не всегда мгновенно. Я хотел узнать, сколько времени потребовалось от события клика пользователя и времени, которое пользователь получил первые байты видео.Отслеживайте, когда пользователь получил первые байты видео

Получение времени userclick не является проблемой, но при просмотре HTML5 видео API here и я не смог найти какое-либо событие, которое близко к тому, что я ищу.

Можно ли отследить такое событие?

+1

Вы хотите отметить это событие: https://developer.mozilla.org/en-US/docs/Web/Reference/Events/loadeddata? – Ian

+0

Ничего себе, спасибо, я не уверен, что это будет работать для навигации по видео, но это, безусловно, полезно. –

ответ

0

Событие, которое вы слушаете после того, как вы получили событие (или «воспроизведение» или «поиск»), зависит от состояния видео до момента клика.

Если у вас есть новый, неиграемый видео элемент с атрибутом preload, установленным в «none», то первые данные, которые вы собираетесь получать из сети, - это метаданные. поэтому вы можете прослушивать событие «загруженные метаданные».

Если preload установлен в «метаданные», вы можете загрузить в зависимости от браузера и платформы. (например, Safari на iPad не будет загружать метаданные или что-либо еще до первого взаимодействия с пользователем.) В этом случае вы хотите прослушивать «загруженные метаданные» или «прогресс». Нельзя было даже слушать «загруженные данные», но я думаю, что «прогресс» срабатывает в первую очередь.

Если для предварительной загрузки установлено значение «авто» или если вы уже сыграли часть видео, вы можете указать может есть фактические видео данные. И хотя вы, вероятно, будете иметь данные в текущей точке на временной шкале, вы можете иметь или не иметь ее в поиске. Это зависит, по крайней мере, от того, как далеко вперед (или позади) вы ищете, как быстро поступают данные и сколько свободного места в браузере есть в кеше.

Если в указанное время нет данных (вы можете проверить это заранее, если хотите, с .buffered, см. TimeRanges), то следующее событие, которое вы видите, будет либо «загруженоdata», либо «progress», возможно а затем «карусель». Если в целевое время поиска есть достаточно данных, буферизуемых, то вопрос на самом деле не применяется, потому что ничего другого не будет передано.

Однако в любом из вышеприведенных случаев, когда имеется достаточное количество данных для отображения кадра в новой точке на этой временной шкале и что данные были декодированы, произойдет «искаженное» событие. Поэтому, если вы должны выбрать только один (нет причин, по которым вы не можете использовать больше), это тот, который нужно выбрать.

Смежные вопросы