移动Safari - 等到<video>完全下载后再播放</video>

时间:2013-10-31 09:11:55

标签: ios html5 video safari popcornjs

我正在构建一个网站,其中包含非常复杂的<video>体验,其中涉及跳过视频的时间线。为了使其尽可能顺利地工作,最好在视频完全缓冲之前不要开始播放。

我有这个设置并在桌面浏览器中工作(`preload =“auto”主要是我需要去的地方)但当然移动浏览器不会预加载内容并需要用户交互来启动视频缓冲。 / p>

我的问题:在移动版Safari中,是否有可能在用户点按播放到后视频开始播放直到完全下载?

我正在使用Popcorn HTML5媒体框架,如果有帮助的话。

1 个答案:

答案 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();
    }
}