我正试图返回并将已完成或正在进行的实时事件与真实世界的时间戳同步(例如,一场接一场的twitter播放)。我不拥有有问题的实时事件。显然,这只适用于可以回放或重播的事件(例如许多与游戏相关的广播)
有没有办法检索现场活动的开始时间?
我试过以下几种:
使用player.getDuration():
如果当前播放的视频是实时事件,则getDuration()函数将返回自实时视频流开始以来经过的时间。具体来说,这是视频在没有被重置或中断的情况下流式传输的时间量。此外,此持续时间通常比实际事件时间长,因为流可能在事件的开始时间之前开始。
这似乎并不总是准确的——如果现场活动有一个固定的广播持续时间,这似乎会返回广播计划的总时间。这是一个随机视频,展示了这种行为:http://www.youtube.com/watch?v=e-Bb5F8Jcwg(通过http://www.youtube.com/live/all)
我还尝试过使用数据api并从片段中获取发布时间,但这通常需要在广播真正开始前几个小时或几天。
作为一个非内容所有者,这次有什么方法可以检索吗?
谢谢!
编辑:
在进一步研究后,我发现了developers.google.com/youtube/2.0/…,它似乎在yt下提供了以下信息:每次活动的时间。。。所以我想我修改后的问题是——有没有一种方法可以在给定视频ID的情况下检索它,或者我总是需要通过实时事件api找到它?
您可以使用Data API v3进行此操作。
你可以做一个视频->列表id=VIDEO id
您可以从响应的contentDetails.duration中获取duration。
如果内容是你自己的,你可以使用v3直播API。
您可以使用id=VIDEO_id 进行直播广播->列表
您可以根据响应使用snippet.actualStartTime和snippet.actualEndTime计算持续时间。
请参阅此问题。
摘要版本为:
- 使用数据API v3
- 要在频道上查找已安排的实时事件,请使用搜索端点,该端点具有channelId、type=video和eventType=incoming
- 要检索即将发生的事件的开始时间,请使用视频端点和part=liveStreamingDetails
您可以使用Videos:list Youtube API查询给定视频ID的liveStreamingDetails
部分。
然后你会在转发中看到这样的东西:
"liveStreamingDetails": {
"actualStartTime": "2023-06-10T20:33:25Z",
"actualEndTime": "2023-06-10T22:44:31Z"
}