书签

本指南介绍了如何使用 IMA DAI SDK 实现书签功能 。 这里假定一个有效的 IMA DAI 实现(如 开始使用

什么是添加书签?

书签是指先保存书签,然后再返回到特定位置 。假设一位用户观看了 5 分钟的内容 离开视频流,然后返回视频流。书签功能可保存 用户在视频流中的位置,以便流式传输能够从其位置 从而为观看者提供顺畅的体验

DAI 书签功能探秘

为 DAI 视频流添加书签时,您必须记录视频流 ID 和时间 当用户离开视频时触发。当用户返回时,系统会重新请求 流式传输并跳转至保存的时间。由于请求的 只需保存视频流即可设置不同时长的广告插播时间点 时间不会行。您真正想做的是 内容时间

需要解决的转换方法

IMA DAI SDK 提供了两种方法来请求内容时间 特定直播时间以及特定内容的直播时间 时间。借助这些转换方法,您可以存储已添加书签的 content time,然后定位到 流的新实例。方法如下所示,包括一个链接 到一个示例应用,该应用展示了有效的书签添加实现。

保存书签

在活动暂停后保存书签。

- (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;
    }
  }
}

示例应用

示例应用