Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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视频加载时间_Javascript_Html_Video_Dom Events - Fatal编程技术网

Javascript HTML5视频加载时间

Javascript HTML5视频加载时间,javascript,html,video,dom-events,Javascript,Html,Video,Dom Events,我试图计算HTML5视频的测量时间。我使用Javascript收听html5视频事件loadstart和canplaythrough,使用: media.addEventListener('loadstart'getStartTime(){ startTime = new Date().getTime();}, false) 与endTime类似,事件设置为canplaythrough收听。 然而,我无法获得任何数据 有人可以指导我如何使用Javascript测量视频加载时间吗 感谢您的回

我试图计算HTML5视频的测量时间。我使用Javascript收听html5视频事件
loadstart
canplaythrough
,使用:

media.addEventListener('loadstart'getStartTime(){
 startTime = new Date().getTime();},
 false)
endTime
类似,事件设置为
canplaythrough
收听。 然而,我无法获得任何数据

有人可以指导我如何使用Javascript测量视频加载时间吗

感谢您的回复,但我相信解决方案是使用jQuery;但是,我想知道是否可以从Javascript实现。我已附上我的代码副本:

function loadVideo(){
    var timeNow = Date.now(), timeStartLoad, timeFinishLoad;
    myVideos = new Array();
    myVideos[0] = "trailer.mp4";
    myVideos[1] = "trailer.ogg";
    myVideos[2] = "trailer.m4v";
    var videoId = document.getElementById('idForVideo');
    var video = document.createElement('video');
    for(var i=0; i<myVideos.length; i++){
        var source = document.createElement('source');
        source.setAttribute('src', myVideos[i]);
        video.appendChild(source);
    }
    video.load();
    video.addEventListener('loadstart', function(){
        timeStartLoad = Date.now() - timeNow;
        }, false);
    video.addEventListener('hasenoughdata', function(){
        timeFinishLoad = Date.now() - timeStartLoad;
        }, false);
    idForVideo.appendChild(video);
    newDiv = document.getElementById('newDiv');
    newDiv.innerHTML = "BodyLoad: " + timeNow + " " + "; Video Load: " + timeStartLoad + "; Video Loaded: " + timeFinishLoad;
    //alert(timeStartLoad);
    
} 
函数loadVideo(){
var timeNow=Date.now(),timeStartLoad,timeFinishLoad;
myVideos=新数组();
myVideos[0]=“trailer.mp4”;
myVideos[1]=“trailer.ogg”;
myVideos[2]=“trailer.m4v”;
var videoId=document.getElementById('idForVideo');
var video=document.createElement('video');
对于(var i=0;i,您的代码存在一些(复制和粘贴)语法问题

var timeInit = Date.now(), timeLoad, timeCanPlay;

$("movie").addEventListener('loadstart', function(){
  timeLoad = Date.now();
    $("t1").innerHTML = "load: " + (timeLoad - timeInit) + " msecs";
});

$("movie").addEventListener('canplaythrough', function(){
  timeCanPlay = Date.now();
  $("t2").innerHTML = "canplay: " + (timeCanPlay - timeLoad) + " msecs";
});

$("movie").src = "http://ia600208.us.archive.org/12/items/FarSpeak1935/FarSpeak1935_512kb.mp4";

$("movie").play();
试试看::

嘿,我想到了。 原因似乎是由于浏览器的快速响应,它甚至在捕获事件之前就获取数据。opera提供的解决方案似乎有效。在内联脚本中包含事件侦听器,并为窗口对象制作addEventListener。 详情请浏览:

虽然我无法发表评论,但我已经在@noiv发布的上面的小提琴上添加了一个叉子,因为小提琴有一些JS错误。感谢@noiv为我指明了正确的方向


值得注意的是,whatwg正试图在浏览器中实现视频指标的一致性,这样浏览器就可以支持一些共同的属性,尽管这项工作似乎已经在各方之间展开,Mozilla支持他们自己的指标,Chromium团队支持他们的指标,Apple Safari sup支持他们的指标移植他们的。

感谢您的回复。我会尝试一下。对于帮助您达到第二级的答案,有什么奖励吗?
$("movie").addEventListener('loadstart', function(){
    timeLoad = Date.now();
    console.log("loadstart event time: " + timeLoad + ", delta: " + (timeLoad - timeInit));
    // alert("loadstart event time: " + timeLoad + ", delta: " + (timeLoad - timeInit));
});