【问题标题】:Get current duration of YouTube Live Event获取 YouTube 直播活动的当前持续时间
【发布时间】:2015-05-17 00:42:20
【问题描述】:

有没有办法在直播到 YouTube 时获取录制流的当前时间?我希望能够在整个实时流中的某些点发送 API 请求,以获取流的当前分钟/秒。我想要达到的最终结果是能够记录一个亮点列表。本质上,用户按下一个按钮,它会获得当时流的当前时间,然后用户可以为当时发生的事情添加注释。但是,通过阅读所有文档,我找不到获取录制流当前时间的方法。

【问题讨论】:

  • 嘿@Brandon Rohde 我的回答对你有帮助吗?如果您需要更多帮助,请告诉我。
  • 抱歉@JAL 回复延迟!我今天重新审视了这个,这绝对有帮助。这是朝着正确方向迈出的一步,但是对于实时流,它仍然非常不一致和不可靠。直播时间越长,情况似乎越差。
  • 我同意。 Live Streaming API 仍然非常不稳定,即使发布了一年多。此外,iFrame API 随时可能被弃用,因此理想情况下,YouTube 应该提供一种更好的方式来使用其 HTML5 播放器获取持续时间。

标签: youtube youtube-api youtube-data-api youtube-livestreaming-api


【解决方案1】:

看来您可以使用 iFrame API 的 getDuration() 方法做到这一点。

https://developers.google.com/youtube/iframe_api_reference#getDuration

查看现场活动的特别说明:

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

您没有指定语言,所以我将发布两种不同语言的代码示例。两者都使用 iFrame API。

JavaScript:

window.onYouTubePlayerReady = function(playerId) {
    window.ytplayer = document.getElementById("ytPlayer");
    console.log(window.ytplayer.getDuration());
}

Objective-C(使用 YouTube 的 youtube-ios-player-helper 类)

@property (weak, nonatomic) IBOutlet YTPlayerView *playerView;

// ...

- (void)viewDidLoad {
    [super viewDidLoad];
    [[self.playerView loadWithVideoId:@"iGTIK_8ydoI"] // live at the time answer was posted
}

// ...

- (void)getDurationOfPlayingVideo {

    NSLog(@"duration: %d", [self.playerView duration]);
}

正如我个人测试中的免责声明:Live Streaming API 非常易怒且不稳定,我发现一些 Live Event 返回的持续时间为 0。

【讨论】:

    【解决方案2】:

    这是旧的,但您可以通过 youtube API 获取 liveStreamingDetails.actualStartTime
    有了实际的StartTime,你就可以计算出经过了多少时间。

    "https://www.googleapis.com/youtube/v3/videos"
            "?part=liveStreamingDetails"
            "&id=$id&key=$_key"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多