Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html5视频下载进度仅适用于firefox_Javascript_Jquery_Html5 Video - Fatal编程技术网

Javascript html5视频下载进度仅适用于firefox

Javascript html5视频下载进度仅适用于firefox,javascript,jquery,html5-video,Javascript,Jquery,Html5 Video,我有以下函数来计算视频的加载进度(非常常见): …绑定到$(文档)中的“进度”事件(以及其他一些作为安全措施)。就绪功能: var videoTest = document.getElementById("videoTest"); $('#videoTest').bind('progress', function () { updateProgressBar (videoTest); }); $('#videoTest').bind('loadeddata', function (

我有以下函数来计算视频的加载进度(非常常见):

…绑定到$(文档)中的“进度”事件(以及其他一些作为安全措施)。就绪功能:

var videoTest = document.getElementById("videoTest");

$('#videoTest').bind('progress', function () {
     updateProgressBar (videoTest);
});

$('#videoTest').bind('loadeddata', function () {
     updateProgressBar (videoTest);
});

$('#videoTest').bind('canplaythrough', function () {
     updateProgressBar (videoTest);
});

$('#videoTest').bind('playing', function () {
     updateProgressBar (videoTest);
});
您可以在此处查看一个实例:

正如你所看到的,它在firefox上运行良好,但在其他浏览器中,“percent”变量从未达到预期的“100”值;该函数总是在90~时停止,因此我无法知道视频何时完成加载(这对于我尝试执行的操作至关重要)

这就像“进度”事件在我获得“百分比”的最终值之前停止工作,因为如果单击“播放”按钮,“播放”事件将触发,然后成功计算并读取“百分比”变量的最后一个值(100)

是我遗漏了什么,还是这是一个常见的问题?我有什么办法可以使用吗

提前谢谢

var videoElement=null//TODO设置对视频元素的引用
var videoElement = null; //TODO set reference to video element

var checkVideoLoadingProgressTimerDelay = 50;
var checkVideoLoadingProgressTimerID = -1;

function getVideoLoadingProgress(){
    var end = 0;
    if(videoElement.buffered.length >= 1){
        end = videoElement.buffered.end(0);
    }
    var progress = end / videoElement.duration;
    progress = isNaN(progress) ? 0 : progress;
    return progress;
};

function startCheckVideoLoadingProgressTimer(){
    checkVideoLoadingProgressTimerID = 
        setTimeout(checkVideoLoadingProgressTimerHandler, checkVideoLoadingProgressTimerDelay);
};

function checkVideoLoadingProgressTimerHandler(){
    var progress = getVideoLoadingProgress();
    //TODO update progress bar
    if(progress < 1){
        startCheckVideoLoadingProgressTimer();
    }
};
var checkVideoLoadingProgressTimerDelay=50; var checkVideoLoadingProgressTimerID=-1; 函数getVideoLoadingProgress(){ var-end=0; 如果(videoElement.buffered.length>=1){ end=videoElement.buffered.end(0); } var progress=结束/videoElement.duration; 进度=isNaN(进度)?0:进度; 返回进度; }; 函数startCheckVideoLoadingProgressTimer(){ checkVideoLoadingProgressTimerID= 设置超时(检查VideoLoadingProgressTimerHandler,检查VideoLoadingProgressTimerDelay); }; 函数检查VideoLoadingProgressTimerHandler(){ var progress=getVideoLoadingProgress(); //TODO更新进度条 如果(进度<1){ startCheckVideoLoadingProgressTimer(); } };
另外,视频的“预加载”属性的值为“auto”,并不保证用户代理将加载整个视频

var videoElement = null; //TODO set reference to video element

var checkVideoLoadingProgressTimerDelay = 50;
var checkVideoLoadingProgressTimerID = -1;

function getVideoLoadingProgress(){
    var end = 0;
    if(videoElement.buffered.length >= 1){
        end = videoElement.buffered.end(0);
    }
    var progress = end / videoElement.duration;
    progress = isNaN(progress) ? 0 : progress;
    return progress;
};

function startCheckVideoLoadingProgressTimer(){
    checkVideoLoadingProgressTimerID = 
        setTimeout(checkVideoLoadingProgressTimerHandler, checkVideoLoadingProgressTimerDelay);
};

function checkVideoLoadingProgressTimerHandler(){
    var progress = getVideoLoadingProgress();
    //TODO update progress bar
    if(progress < 1){
        startCheckVideoLoadingProgressTimer();
    }
};