【问题标题】:How to retrieve the start time of a live event on YouTube?如何检索 YouTube 上直播活动的开始时间?
【发布时间】:2013-08-05 21:49:35
【问题描述】:

我正在尝试返回并将已完成或进行中的直播活动与真实世界的时间戳同步(例如,Twitter 的逐个播放)。我不拥有相关的直播活动。显然,这只对可以倒带或重播的事件有用(例如许多与游戏相关的广播)

有没有办法检索直播活动的开始时间?

我尝试了以下方法:

使用 player.getDuration():

如果当前播放的视频是直播事件,getDuration() 函数将返回直播视频流开始后经过的时间。具体来说,这是视频在没有被重置或中断的情况下流式传输的时间量。此外,此持续时间通常比实际活动时间长,因为流式传输可能在活动开始时间之前开始。

这似乎并不总是准确的 - 如果直播活动具有设定的广播持续时间,这似乎会返回计划广播的总时间。这是一个展示该行为的随机视频:http://www.youtube.com/watch?v=e-Bb5F8Jcwg(通过 http://www.youtube.com/live/all 找到)

我也尝试过使用数据 api 并从 sn-p 中获取发布时间,但这通常是在广播实际开始之前的几个小时或几天。

作为非内容拥有者,有没有办法找回这个时间?

谢谢!

编辑:
进一步查看后,我发现 developers.google.com/youtube/2.0/... 似乎在 yt:when 对于每个事件...给定一个视频 ID,还是我总是需要通过直播活动 api 找到它?

【问题讨论】:

    标签: youtube-api youtube-javascript-api


    【解决方案1】:

    您可以为此使用Data API v3

    您可以使用 id=VIDEO_ID 进行videos->list

    您可以从响应中的contentDetails.duration 获取持续时间。


    如果内容是您自己的,您可以为此使用 v3 Live Streaming API

    您可以使用 id=VIDEO_ID 进行liveBroadcasts->list

    您可以使用响应中的snippet.actualStartTimesnippet.actualEndTime 计算持续时间。

    【讨论】:

    • 感谢您的回复,但这仅适用于我拥有的广播吗?在 API 资源管理器中,输入我在原始帖子中使用的示例 id 会返回 403 并出现以下错误:"errors": [ { "domain": "youtube.liveBroadcasts", "reason": "insufficientLivePermissions", "message": "Request is not authorized", "extendedHelp": "https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list#auth_required" }
    • 要使用 Live API,您需要有一个启用直播的频道,并且您可以针对该频道使用它。
    【解决方案2】:

    this question

    摘要版本是:

    • 使用数据 API v3
    • 要查找频道上的预定直播活动,请使用带有 channelId、type=video 和 eventType=upcoming 的 search 端点
    • 要检索即将举行的活动的开始时间,请使用 videos 端点和 part=liveStreamingDetails

    【讨论】:

      猜你喜欢
      • 2015-05-17
      • 2016-01-23
      • 2017-02-16
      • 2021-05-18
      • 2014-03-28
      • 2015-06-04
      • 2016-08-14
      • 2021-08-15
      • 1970-01-01
      相关资源
      最近更新 更多