我正在构建一个具有相当复杂<video>
体验的网站,其中涉及在视频的时间线上跳跃相当多的时间。为了使其尽可能流畅地工作,最好在视频完全缓冲之前不要开始播放。
我有这个设置并在桌面浏览器中工作(`preload="auto" 主要是让我去我需要去的地方)但当然移动浏览器不会预加载内容并且需要用户交互来启动视频缓冲。
我的问题:在 Mobile Safari 中,是否有可能在用户点击“播放”后,直到视频完全下载后才开始播放?
如果有帮助的话,我正在使用Popcorn HTML5 媒体框架。
canplaythrough
您可以在 JavaScript 中订阅一个名为 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();
}
}