如何在YT API上获取视频时长?

时间:2016-03-04 15:32:54

标签: javascript youtube-api

大家好,我正在使用YT api播放一些视频,但我想在视频播放完成后创建一些功能。有什么办法可以找到视频有多长?

function onPlayerReady() {
  function updateTime() {
    var oldTime = videotime;
    if(player && player.getCurrentTime) {
      videotime = player.getCurrentTime();
    }
    if(videotime !== oldTime) {
      onProgress(videotime);
    }
  }
  timeupdater = setInterval(updateTime, 100);
}

// when the time changes, this will be called.
function onProgress(currentTime) {
    console.log(videotime)
    var halfway = (videotime / 2);
  if(currentTime == halfway) {
    counters("midpoint"); 
    console.log("the video has reached halfway!");
  }
}

我正在使用这个来查看时间

2 个答案:

答案 0 :(得分:0)

使用找到here的“视频”列表API。您想要part属性的“contentDetails”。然后它应该作为contentDetails.duration

返回

答案 1 :(得分:0)

嗯,你需要改变许多事情。

  • 删除updateTime()函数,没有必要。
  • 不要存储像oldTime和videotime这样的变量来检查播放器状态只做player.getPlayerState(),1表示'正在播放'
  • onProgress()中你将计算中途的比较作为视频(currentTime)除以2,这不是玩家的持续时间。

最终和缩短的代码:

function onPlayerReady() {
  timeupdater = setInterval(function() {
    if (player.getPlayerState() == 1)
        onProgress(player);
  }, 100);
}

// when the time changes, this will be called.
function onProgress(p) {
  if(p.getCurrentTime() > p.getDuration() / 2) {
    // counters("midpoint"); 
    console.log("the video has reached halfway!");
  }
}

Fiddle

希望对你有用:)