与API观看YouTube视频的百分比计算(Calculate percentage of yout

2019-06-26 17:27发布

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

是有,我可以衡量一个YouTube的比例嵌入,有人边看边标记为完成,如果他们看的方式,比方说80%以上?

我的最好的办法,到目前为止是使用getCurrentTime()当玩家的状态更改为玩,然后每五秒钟一次,或因此增加的差异某种总计。 但是,如果有人看了第一分钟五倍,他们会最终有一个勾掉视频,即使他们还没有看到整个事情。

是否有一个更好的解决方案来计算观看的视频的%,而不是计算所花费的时间观看该视频的量的上述方法?

Answer 1:

怎么样是这样的:

        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
            }

         }


Answer 2:

我使用AngularJS的角度YouTube的嵌入模块(这里找到https://github.com/brandly/angular-youtube-embed )。 但是,这种解决方案将工作同样为纯JavaScript / YouTube的API调用。 我只是不喜欢重新写我的解决方案。

基本概念是,你是切片的视频全长成任意大小的段。 在此样品溶液我分割视频成一系列的10秒片。 每5秒计时器检查在对应于它的切片玩家当前时间。 您测试不是每个人代表片的长度更频繁地是非常重要的。

所述getPctCompleted()方法会给你在总视频的长度的完成率,而不管用户是否跳转到视频结束的。

但高级用户将总是能够欺骗这一点。 所以这真的不是“证明”有人看着什么。 这是不可信的输入,就像用户进行任何其他输入。

       $scope.analyzer = {};
       $scope.timeElapsed = 0;
       $scope.videoLength = 0;

       $scope.$on('youtube.player.playing', function($event, player) {
           $scope.videoLength = player.getDuration();
           $scope.player = player;
           //start polling
           setInterval(function() {
                $scope.timeElapsed = $scope.player.getCurrentTime();
                $scope.analyzer[parseInt($scope.timeElapsed / 10)] = true;
                $scope.$apply();
           }, 5000);
       });

       $scope.getPctCompleted = function() {
           return Object.keys($scope.analyzer).length / (parseInt($scope.videoLength / 10));
       };


文章来源: Calculate percentage of youtube video viewed with API