计算使用API​​查看的YouTube视频的百分比

Dav*_*veR 5 javascript youtube youtube-api

我正在制作视频和在线练习的在线课程,并希望人们能够登录并跟踪他们的进度.

有没有办法可以衡量一个有人看过的YouTube嵌入的百分比,并且如果他们已经查看过,那么将其标记为完整,超过80%?

到目前为止,我最好的想法是当玩家的状态变为PLAYING时使用getCurrentTime(),然后每隔五秒左右再次使用getCurrentTime()将差异添加到某种总数.然而,如果有人在第一分钟观看了五次他们最终会看到一个勾选的视频,即使他们没有看到整个事情.

是否有更优雅的解决方案来计算观看视频的百分比,而不是上述方法来计算观看视频所花费的时间?

小智 5

像这样的事情怎么样:

        var i; //Global variable so that you can reset interval easily

        function onYouTubePlayerReady(playerid) 
        {
            ytp = document.getElementById("ytvideo"); //get player on page
            ytp.d = ytp.getDuration(); //get video duration
            i = setInterval(checkPlayer, 5000); //check status

        }

        function onplayerReset() 
        {
            clearInterval(i);
        }

        function checkPlayer()
        {
            var p = ytp.getCurrentTime(); //get video position
            var d = ytp.d; //get video duration
            var c = p/d*100; //calculate % complete
            c = Math.round(c); //round to a whole number
            var t = document.getElementById('videotitle').innerHTML;

            if(ytp.isReset) { c = 0; }
            ytp.c=c;

            if(!ytp.completed) 
            {   
               if(c>=80) { _gaq.push(['_trackEvent', 'Video Status', t,'Complete']); ytp.completed=true; } // or do something else
            }

         }
Run Code Online (Sandbox Code Playgroud)