我一直在为html5视频开发一套基于画布的视频控件。直到最近,一切都运作良好。一旦视频开始缓冲,我的'progress'事件的javascript事件监听器将更新画布擦除器。
最近,我升级了我的操作系统,最新版本的Chrome(15.0.874.106)似乎没有正确启动进度事件。它不会在视频完全加载之前触发,而是在很短的时间后停止发射。 Firefox或以前版本的Chrome(12)中不存在此行为。
有什么东西我不见了吗?
以下是我正在使用的测试代码:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<video id="main-player" preload="auto" controls>
<source src='video/atest.mp4' type='video/mp4' />
<source src='video/atest.webm' type='video/webm' />
<source src='video/atest.ogv' type='video/ogg' />
</video>
<script>
var player = document.getElementById('main-player');
player.addEventListener('progress', function(){
console.log('buffering: [duration: '+player.duration+'] [buffered: '+player.buffered.end(0)+']');
});
</script>
</body>
</html>
即使我完全删除了我的JS处理程序并且只观察了视频标记提供的擦除器,缓冲也会提前停止。