Я работаю над созданием видеоплеера HTML5 с пользовательским интерфейсом, но у меня есть некоторые проблемы при получении видео информации продолжительности для отображения.
Мой HTML прост:
<video id="video" poster="image.jpg" controls>
<source src="video_path.mp4" type="video/mp4" />
<source src="video_path.ogv" type="video/ogg" />
</video>
<ul class="controls">
<li class="time"><p><span id="timer">0</span> of <span id="duration">0</span></p></li>
</ul>
И JavaScript, который я использую, чтобы получить и вставить продолжительность,
var duration = $('#duration').get(0);
var vid_duration = Math.round(video.duration);
duration.firstChild.nodeValue = vid_duration;
Проблема - ничто, происходит. Я знаю, что видеофайл имеет данные продолжительности, потому что, если я просто использую средства управления по умолчанию, это отображается прекрасный.
Но реальная странная вещь состоит в том, если я поместил предупреждение (продолжительность) в мой код как так
alert(duration);
var vid_duration = Math.round(video.duration);
duration.firstChild.nodeValue = vid_duration;
затем это хорошо работает (минус раздражающее предупреждение, которое открывается). Какие-либо идеи, что происходит здесь или как я могу зафиксировать его?
ОБНОВЛЕНИЕ: хорошо поэтому, хотя я не решил эту проблему точно, но я действительно выяснял, что работа вокруг этого обрабатывает мое самое большое беспокойство... пользовательский опыт.
Сначала видео не начинает загружаться, пока средство просмотра не поражает кнопку воспроизведения, таким образом, я предполагаю, что информация о продолжительности не была доступна, чтобы быть вытянутой (я не знаю, как устранить эту конкретную проблему..., хотя я предполагаю, что это включило бы просто загрузку метаданных видео отдельно от видео, но я даже не знаю, возможно ли это).
Таким образом для обхождения того, что нет никаких данных продолжительности я решил скрыть информацию о продолжительности (и на самом деле все управление) полностью, пока Вы не поражаете игру.
Тем не менее, если кто-либо знает, как загрузить метаданные видео отдельно из видеофайла, совместно используйте. Я думаю, что это должно полностью решить эту проблему.