我正在构建一个网站,其中包含非常复杂的<video>
体验,其中涉及跳过视频的时间线。为了使其尽可能顺利地工作,最好在视频完全缓冲之前不要开始播放。
我有这个设置并在桌面浏览器中工作(`preload =“auto”主要是我需要去的地方)但当然移动浏览器不会预加载内容并需要用户交互来启动视频缓冲。 / p>
我的问题:在移动版Safari中,是否有可能在用户点按播放到不后视频开始播放直到完全下载?
我正在使用Popcorn HTML5媒体框架,如果有帮助的话。
答案 0 :(得分:3)
您可以在JavaScript中订阅名为canplaythrough
的DOM事件。当浏览器估计它可以播放整个视频而不暂停缓冲时,将调用此事件。
编辑:同样,您可以使用progress
事件来确定已缓冲了多少视频:
var player = document.getElementById('video_player'); // The <video> element
player.addEventListener('progress', onVideoProgressUpdate, false);
function onVideoProgressUpdate(e) {
var percentageBuffered = 0;
if (player.buffered.length > 0 && player.buffered.end && player.duration) {
percentageBuffered = player.buffered.end(0) / player.duration;
} else if (player.bytesTotal != undefined && player.bytesTotal > 0 && player.bufferedBytes != undefined) {
percentageBuffered = player.bufferedBytes / player.bytesTotal;
}
if (percentageBuffered == 1) { // 100% of the video has been buffered
player.Play();
}
}