video标签怎么先缓存完再播放

由于需要播放途中不能缓冲,所以就想着缓冲完再开始播放。用了preload结果只能加载一部分,并不会加载全部,如果不开始播放就不会继续加载,一直就触发不了canplaythrough,一般这种都是怎么解决的?

阅读 9.1k
1 个回答

换个思路:先将视频下载下来,存成数据文件,然后再播放。

var hasLoaded = false;
var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'arraybuffer';
    xhr.timeout = '6000';
    xhr.send();
    xhr.onload = function() {
        if (xhr.status !== 200) {
            return;
        }
        // 转换成文件格式
        var binaryData = new Uint8Array(xhr.response);
        // 生成一个本地的url
        var rUrl = window.URL.createObjectURL(new Blob([binaryData], {
            type: "video/mp4"
        }));
        // video赋值
        video.src = rUrl;
        // 加载成功标识
        hasLoaded = true;
    };
    xhr.onerror = function () {
        console.log("video request was wrong");
    };

当然也可以使用jQuery, 要1.8以上的版本才支持。

推荐问题