保存和加载广告连播书签

请选择平台HTML5 Android iOS tvOS Roku

本指南介绍了在为视频点播 (VOD) 串流使用动态广告插播 (DAI) 时,如何使用 IMA DAI SDK 实现书签功能。 这假设 IMA DAI 实现正常运行,例如使用入门中介绍的实现。

什么是添加书签?

书签功能可用于保存内容流中的某个具体点,方便之后返回同一位置。假设一位用户观看某内容 5 分钟后离开了相应视频流,然后又返回观看。由于书签可保存用户在视频流中的位置,因此用户返回时便可从上次停下的位置继续观看,畅享流畅一致的体验。

深入了解 DAI 书签功能

为 DAI 直播添加书签时,您必须记录用户离开视频时的直播 ID 和时间。当用户返回时,重新请求流并定位到保存的时间。由于所请求的每个直播实例的广告插播时长可能不同,因此仅保存直播时间是行不通的。您真正想做的是从相同的内容时间继续播放。

转换方法来帮忙

IMA DAI SDK 提供了一对方法,用于请求给定视频流时间内容时间和给定内容时间视频流时间。使用这些转换方法,您可以存储添加了书签的内容时间,然后在新的视频流实例中定位到相应的视频流时间。以下是相关方法,其中包含指向示例应用的链接,该应用展示了有效的书签实现。

保存书签

在 activity 暂停时保存书签。

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [self.contentPlayer pause];
  // Ignore this if you're presenting a modal view (e.g. in-app clickthrough).
  if ([self.navigationController.viewControllers indexOfObject:self] ==
      NSNotFound) {
    NSTimeInterval contentTime =
        [self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
            self.contentPlayer.currentTime)];
    self.video.savedTime = contentTime;
    ...
    }
  }

正在加载书签

在重新请求视频流时加载书签。这是实现 VideoStreamPlayer 接口的一部分。

- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  ...
  case kIMAAdEvent_STREAM_LOADED: {
    if (self.video.savedTime > 0) {
      NSTimeInterval streamTime =
          [self.streamManager streamTimeForContentTime:self.video.savedTime];
      [self.IMAVideoDisplay.playerItem
          seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
      self.video.savedTime = 0;
    }
  }
}

示例应用

示例应用