JavaScript/PHP: отслеживать время просмотра видео пользователем на веб-странице?

Мой клиент предлагает сайт с видеоуроками, где могут зарегистрироваться как учителя, так и студенты. Время просмотра студентами каждого видео должно отслеживаться, чтобы дать учителям обратную связь. Сайт разработан с использованием чистого HTML/PHP/JS/MySQL. Видео доставляются видео-хостером, и специального JavaScript-API не предоставляется. Я знаю, что нет никакого способа убедиться, что кто-то действительно просматривает и понимает содержание видео (кроме как предлагая экзамены / викторины), поэтому под "просмотром" я подразумеваю отслеживание времени во время комбинации следующих технических фактов:

  • окно браузера видно (не свернуто / вкладка в фоновом режиме)
  • видео работает (не приостановлено / не остановлено)

В связи с тем, что продолжительность видео не менее 6 минут, точное количество секунд указывать не обязательно - здесь будет достаточно приблизительного значения +- 10 секунд. Я уже придумал следующий подход, но я не знаю, есть ли какие-то серьезные недостатки, о которых я еще не подумал: как только видео начинает воспроизводиться, интервал срабатывает, например, каждые 10 секунд. Если состояние видео "запущено" и document.visibilityState не "скрыто", интервал запускает запрос ajax к базе данных, который сохраняет запись "user_id, video_id, datetime". Таким образом, cronjob может собирать эти вехи один раз в день и рассчитывать общее время просмотра для каждого пользователя / видео. Конечно, я должен был убедиться, что время между этими записями не превышает определенного значения, в этом случае, скажем, 15 секунд,чтобы убедиться, что видео не было приостановлено на более длительное время.

Кто-нибудь знает более умный и / или безопасный способ, или вы видите какие-либо серьезные недостатки, касающиеся

  • надежность
  • функциональность (настольные / мобильные браузеры)
  • производительность (база данных?)

Спасибо, что поделились со мной своими мыслями!

0 ответов

Другие вопросы по тегам