Несоответствующая длительность HTMLMediaElement

У меня возникла проблема с моим видеопроигрывателем, когда продолжительность видео, возвращенная из HTMLMediaElement.duration, не соответствует. Я настроил следующий слушатель, чтобы помочь проиллюстрировать:

video.addEventListener('timeupdate', function(e) {
    console.log('Duration: ' + video.duration);
    if ( video.currentTime === video.duration ) {
        console.log( video.currentTime + ' === ' + video.duration )
    }
});

Когда я ищу весь путь до конца видео, это событие возвращает другое (более точное) значение. Ниже я приведу пример моих журналов:

Duration: NaN
Duration: 135.8357
Duration: 135.8357
Duration: 135.8357
Duration: 135.8357
Duration: 135.8357
Duration: 135.8357
...

..Я стремлюсь к концу видео..

...
Duration: 135.8357
135.8357 === 135.8357
Duration: 135.952833

Я ищу весь путь до конца видео, текущее время равно продолжительности, а затем продолжительность обновляется до другого времени. Поиск до конца видео не приводит к ended событие (если только видео не возобновится и не достигнет новой конечной точки 135.952833).

Есть ли у кого-нибудь понимание этой проблемы или мысли о возможном решении?

0 ответов

У меня была точно такая же проблема, но с аудиоэлементом. При поиске до конечной точки аудиоdurationchange событие постоянно запускалось, audio.duration меняется в течение нескольких секунд.

Оказалось, проблема с источником звука. Вот сценарий проблемного звука: https://jsfiddle.net/jessuni/kxcmye8z/42/ Вы пробовали другой источник видео и воспроизвели проблему?

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