获取 YouTube 直播总时长

问题描述 投票:0回答:1

我想获取 YouTube 上当前直播的总时长(未结束!)。这对于普通视频来说很简单,例如:

https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id={VIDEO_ID}&key={KEY}

但是,对于直播流,例如 来自 ISS 的地球直播,这只会返回“PT0S”的持续时间,这本质上意味着它的长度为 0 秒。

应该有办法得到它。获取它的一种方法是通过 Javascript,如果您在浏览器中打开了直播:

ytplayer = document.getElementById("movie_player");

console.log("持续时间:" + ytplayer.getDuration());

可以从服务器端获取吗? 其他人也提出了同样的问题,但尚未收到答复。

编辑:我刚刚注意到获取持续时间的 JavaScript 方法没有任何意义。对于 2 小时前开始的直播,getCurrentTime() 在当前时间正确返回 2*60*60=7200,但 getDuration() 无论出于何种原因返回 10245。

youtube live-streaming youtube-data-api
1个回答
0
投票

因此,基本上 YouTube Player API 对于视频和直播流的工作方式有点不同。对于直播,

player.getDuration()
将在直播开始后的前 30 分钟内返回
3600
(1 小时)。

直播 30 分钟后,它将返回播放器加载时的持续时间流以及

3600

示例

  • 如果流在 10 分钟前开始
    player.getDuration()
    返回
    3600
  • 如果流在 2 小时前开始并且您刚刚打开页面
    player.getDuration()
    返回
    10800
    ,即
    7200 + 3600
  • 如果你打开页面时时长
    player.getDuration()
    等于
    10800
    ,那么无论你看直播多久,它都会保持这样。仅当您刷新播放器时,
    player.getDuration()
    才会更新。

提示

因此,如果您想知道实际的持续时间,您可以记录播放器加载时的系统时间(

new Date().getTime() / 1000
),然后在下次检查时添加差异。

© www.soinside.com 2019 - 2024. All rights reserved.