Я создаю веб-приложение для потоковой передачи аудио / видео html5. Этот вопрос относится к звуковой части проекта, но я уверен, что столкнусь с аналогичной ситуацией, когда начну работать с видео. Моим целевым устройством является сафари-браузер iPad (поэтому я должен использовать этот html5). Воспроизведение работает нормально, но у меня есть полоса загрузки, которая должна отражать, сколько трека загружено. Следуя спецификации w3, я попытался реализовать это следующим образом с помощью jQuery:
var that = this;
that.player = $('audio')[0];
$('that.player').bind('progress',function(){
var buffer = that.player.buffered.end(0)
that.updateLoadBuffer(buffer);
});
Это не сработало. 'that.player.buffered' возвращает объект TimeRanges, а TimeRanges имеет метод 'end (index)', который возвращает позицию воспроизведения конца буфера в секундах для TimeRange, указанного параметром 'index'. TimeRanges также имеет свойство .length, которое сообщает вам, сколько TimeRanges инкапсулировано объектом. Когда я попытался зарегистрировать это свойство, я обнаружил, что TimeRanges.length = 0, что означает, что TimeRanges не передаются обратно. Кроме того, когда я бросил операторы регистрации в связанную функцию, я обнаружил, что событие «прогресс» никогда не запускалось. У меня есть отдельные функции для событий loadedmetata и timeupdate, которые следуют аналогичному формату, и они запускаются, как ожидалось. Я пробовал другие методы захвата событий, но безрезультатно:
that.player.onprogress = function(e){
console.log('progressEvent heard');
};
that.player.addEventListener('progress',progressHandler, false)
function progressHandler(e){
console.log('progressEvent heard');
};
Ни один из них не вызвал мое консольное сообщение. Мое объявление аудио тега выглядит следующим образом:
<audio style="width:0;height:0;"></audio>
что я здесь делаю не так?
ОБНОВЛЕНИЕ: Я использую wowzamediaserver для обработки потоковой передачи http. Я не знаю, могло ли это иметь какое-то отношение к этому.
ЕЩЕ ОДИН ОБНОВЛЕНИЕ: я понимаю, что у меня нет источника в моем теге аудио, потому что я установил его динамически с помощью jquery, как показано ниже:
$('audio').attr('src','http://my.wowza.server:1935/myStreamingApp/_definst_/mp3:path/to/my/track/audio.mp3/playlist.m3u8');
снова у меня нет проблем с воспроизведением, поэтому здесь не должно быть никаких что касается моей проблемы, но я просто хочу дать вам как можно более четкую картину.