gpt4 book ai didi

javascript - Youtube iframe javascript,跟踪观看视频的百分比?

转载 作者:可可西里 更新时间:2023-11-01 02:21:31 26 4
gpt4 key购买 nike

我正在尝试准确计算用户观看视频的时间。他们观看的时间不应包括快进或暂停的时间。我现在拥有的代码每次都给我不同的百分比(我使用的是间隔)。我不知道还有什么办法可以解决这个问题?

function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !done) {
clicked_video = true;
arr.length = (player.getDuration()-1).toFixed(0);
done = true;

}if(event.data === YT.PlayerState.PLAYING){

id = setInterval(check, 1000);

}if(event.data == YT.PlayerState.PAUSED || event.data == YT.PlayerState.BUFFERING){

clearInterval(id);
var percent = 0;
for(var i=0;i<arr.length;i++){
if(arr[i] == "x"){
percent++;
console.log(percent);
}

}

percent = (percent / arr.length) * 100;
alert(percent + "%");
}
}
function check(){

arr[Math.floor(player.getCurrentTime())] = "x";
}

最佳答案

这是一个演示,我认为变量和函数的名称足够明确,可以理解所有内容,但是如果您有任何疑问或问题,请继续提问。

我必须提到的一件事是它不会很准确。如果您的间隔每秒执行一次并且用户在一秒钟中间跳过了一部分,则该部分可能不会被计算在内。为了获得更准确的百分比,您可以更频繁地执行您的间隔(这里是 100 毫秒,来回观看视频时我得到了 97%),但注意不要占用太多资源。

var player, timer, timeSpent = [], display = document.getElementById('display');

function onYouTubeIframeAPIReady() {
player = new YT.Player( 'player', {
events: { 'onStateChange': onPlayerStateChange }
});
}

function onPlayerStateChange(event) {
if(event.data === 1) { // Started playing
if(!timeSpent.length){
timeSpent = new Array( parseInt(player.getDuration()) );
}
timer = setInterval(record,100);
} else {
clearInterval(timer);
}
}

function record(){
timeSpent[ parseInt(player.getCurrentTime()) ] = true;
showPercentage();
}

function showPercentage(){
var percent = 0;
for(var i=0, l=timeSpent.length; i<l; i++){
if(timeSpent[i]) percent++;
}
percent = Math.round(percent / timeSpent.length * 100);
display.innerHTML = percent + "%";
}

JS Fiddle Demo

关于javascript - Youtube iframe javascript,跟踪观看视频的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28751568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com