У меня есть видео html5, которое я пытаюсь настроить обратные вызовы через определенные промежутки времени во время воспроизведения.Видео начинает воспроизводиться из JavaScript с video.play()
.Прямо сейчас мой код прослушивает событие 'loadedmetadata'
, затем запрашивает продолжительность и устанавливает эти обратные вызовы.Прекрасно работает на мобильном сафари, но не на Android (2.3.4 и 2.3.7).
На Android 'loadedmetadata'
, похоже, испускается до того, как продолжительность действительно станет доступной.Чтобы проверить это, я записал продолжительность в каждом шаге процесса загрузки в своем коде, чтобы увидеть, где он действительно может быть прочитан.До video.play()
и после одного события 'timeupdate'
свойство video.duration
равно 6000 независимо от используемого видео.Я проверил это с помощью файла mp4 и файла 3gp.Как только эти условия будут выполнены, фактическая продолжительность доступна.
Я нашел этот пост с похожими проблемами [1].Ответ, получивший наибольшее количество голосов, который не был принят, - это то, как я изначально это настроил, и он отлично работает на iOS.Принятый ответ также не работает, и предполагает, что это проблема webkit.Я регистрирую свойство video.readyState
и вижу, что до начала воспроизведения видео '4'
, но продолжительность все еще недоступна, пока не начнется воспроизведение, и не произойдет первое событие 'timeupdate'
.
Наш текущий обходной путь - запрос значения video.duration
и настройка обратных вызовов событий только при video.duration !== 6000
.Это довольно уродливо, и я хотел бы докопаться до сути, чтобы этот хак не вернулся к укусам.Обсуждение здесь [2], по-видимому, предполагает, что проблема может быть связана с кодированием.То есть, не закодированный должным образом, Android не читает метаданные правильно, пока файл не загружен, или, возможно, вообще, и он рассчитывает продолжительность другим способом.
Есть ли что-нибудь, что я могу сделать, чтобы сделать это чище, или я пока застрял с хаком?
[1] Не удалось получить продолжительность видео HTML5
[2] http://www.broken -links.com / 2010/07/08 / making-html5-video-work-on-and-phone /