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)' 方法,该方法返回由 'index' 指定的 TimeRanges 对象中缓冲区结尾播放位置的秒数。TimeRanges 还有一个 .length 属性,告诉你对象中有多少个 TimeRanges 封装。当我尝试记录该属性时,发现 TimeRanges.length = 0,表示未传回 TimeRanges。此外,当我在绑定的函数中添加日志语句时,发现 'progress' 事件从未触发。我为 'loadedmetadata' 和 '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');
再次强调,我没有播放问题,所以这与我的问题无关,但是我想尽可能清楚地向你们描述情况。