Расчет процента загрузки mp4 с помощью Soundmanager 2
Я пытаюсь рассчитать процент загрузки файла mp4 с Soundmanager2, используя HTML5. В обоих следующих примерах код вызывается каждый раз, когда событие загрузки загружается на объект загрузки SMSound:
// This is the method suggested in the Soundmanager2 documentation
// http://www.schillmania.com/projects/soundmanager2/doc/#smsound-buffered
var percentageLoaded, i, durationLoaded = 0;
for (i = 0; i < this.buffered.length; i++) {
durationLoaded += (this.buffered[i].end - this.buffered[i].start);
}
percentageLoaded = durationLoaded / this.duration * 100;
Этот пример приводит к тому, что процентная нагрузка имеет значение NaN, поскольку длительность остается равной 0 на протяжении всей загрузки. Я также пробовал durationEstimate в месте продолжительности, которое также остается равным 0. Заголовок ответа содержит правильное значение Content-Type (audio / mp4) и значение Content-Length, однако Soundmanager2 в этом случае, похоже, игнорирует продолжительность.
var percentageLoaded = audio.bytesLoaded / audio.bytesTotal * 100;
Этот пример приводит к тому, что процентная нагрузка со значением 0 равна 0, поскольку bytesTotal остается равной 1, а bytesLoaded остается равной 0 до полной загрузки звука. Опять же, значение Content-Range в заголовке правильно сообщает количество байтов, но Soundmanager2 игнорирует это значение.
Есть метод, который я еще не попробовал, который мог бы правильно сообщить процент, или фактор, который я пропустил, который вызвал бы эту проблему? Это просто ограничение Soundmanager2 при загрузке mp4s?
Редактировать 1: все значения верны после того, как событие onload срабатывает, и звук воспроизводится без проблем.
Изменить 2: Вот пример того, что происходит на CodePen: http://codepen.io/anon/pen/EiIch