我正在尝试为视频制作一种热图。我有一个小页面,同一个视频播放2次。我已经有办法从单个视频中获取播放的部分,但现在我应该能够聚合数据以绘制图形,以显示视频的一部分被观看过一次,两次或根本没有。
示例输出就像这样
played1 = [33,36][40,44][52,56]...
played2 = [31,35][42,46][55,58]...
输出应该是31-33播放一次,33-35播放两次,35-36播放一次,36-40播放,...
我已经非常接近解决方案,但是出现了问题,我不知道是什么,这是我的代码:
function getPlayData(r,e){
var Played = 0;
var data = [];
if(r.played.length > 0){
for(var i = 0; i < r.played.length; i ++){
for(var j = 0; j < parseInt(r.duration); j ++ ){
if(parseInt(r.played.start(i)) - j === 0){
Played ++;
data.push(j,Played);
}
else if(parseInt(r.played.end(i)) - j === 0){
Played --;
data.push(j,Played);
}
}
}
for(var i = 0; i < e.played.length; i ++){
for(var k = 0; k < parseInt(e.duration); k ++){
if(parseInt(e.played.start(i)) - k === 0){
Played++;
data.push(k,Played);
}
else if(parseInt(e.played.end(i)) - k === 0){
Played--;
data.push(k,Played);
}
}
}
}
return data;
}
这应该返回一个带有时间戳的数组以及当时有多少次播放,但如果两个视频都从0开始,则只记录一个视图,并且行为总体上不一致。我仍然是初学者,如果我犯了一个明显的错误,感谢对不起,感谢我能得到的所有帮助!
[edit]我正在使用parseInt方法,因为它是所有浮点数据,我已经阅读了很多关于浮点不准确的内容所以我想让它在使用整数之前使其更准确地浮点数
答案 0 :(得分:0)
我将代码更改为此
function getPlayData(r,e){
var Played = 0;
var data = [];
if(r.played.length > 0){
for(var i = 0; i < r.played.length; i ++){
for(var j = 0; j <= parseInt(r.duration); j ++ ){
if(parseInt(r.played.start(i)) - j === 0){
Played ++;
data.push(j,Played);
}
if(parseInt(e.played.start(i)) - j === 0){
Played++;
data.push(j,Played);
}
if(parseInt(r.played.end(i)) - j === 0){
Played --;
data.push(j,Played);
}
if(parseInt(e.played.end(i)) - j === 0){
Played--;
data.push(j,Played);
}
}
}
}
return data;
}
它似乎工作!无论如何,感谢所有阅读我的帖子并试图提供帮助的人!