跟踪视频在网页中播放的时间。

5 浏览
0 Comments

跟踪视频在网页中播放的时间。

问题是如何获得视频播放的总时间。

我正在使用videojs作为JavaScript库。

需要注意的是,currentTime()方法不是我们想要的总播放时间,我们还要考虑观看者将电影跳到任意播放位置,并希望获得实际播放的时间。

例子)

60秒的视频

观看者先观看了前5秒,然后跳到10秒的位置观看了接下来的5秒。

当前时间是15秒,但我希望总观看时间是10秒。

事实上,每当观看者播放10%,就调用API。

如何实现JavaScript?

编辑)

读取视频可能耗时较长,所以很难使用new Date()

例如,由于网络速度问题,5秒的视频可能需要10秒。

我正在考虑以下代码。

只要查看控制台,它在大多数情况下工作正常,但在跳过播放位置时,在极少数情况下测量播放速率时会出现错误。




const player = videojs('myPlayer');
const trackingPoint = 10;
let totalTime = 0;
let tempTotalTime = 0;
let startTime = 0;
player.on('pause', function () {
  totalTime += tempTotalTime;
});
player.on('play', function () {
  startTime = player.currentTime();
});
player.on('timeupdate', function () {
  if (player.paused()) {
    return;
  }
  let currentTime = player.currentTime();
  tempTotalTime = currentTime - startTime;
  let tmptotalTime = totalTime + tempTotalTime;
  let playbackRate = tmptotalTime / player.duration() * 100;
  console.log(Math.floor(playbackRate) + ' %');
});

0