В этом руководстве показано, как реализовать закладки с помощью IMA DAI SDK при использовании динамической вставки рекламы (DAI) для потоков видео по запросу (VOD). Это предполагает работающую реализацию IMA DAI, например, представленную в разделе «Начало работы» .
Что такое закладка?
Создание закладок — это возможность сохранить, а затем вернуться к определенной точке потока контента. Предположим, пользователь смотрит пять минут контента, выходит из видеопотока, а затем возвращается к нему. Создание закладок сохраняет позицию пользователя в потоке, поэтому поток может продолжиться с того места, где он остановился, обеспечивая удобство просмотра для зрителя.
Закладки DAI под капотом
Добавляя в закладки поток DAI, вы должны записать идентификатор потока и время, когда пользователь покидает видео. Когда пользователь вернется, повторно запросите поток и найдите сохраненное время. Поскольку каждый экземпляр запрошенного потока может иметь рекламные паузы разной продолжительности, просто сэкономить время потока не получится. Что вам действительно нужно, так это продолжить с того же времени .
Методы конвертации в помощь
IMA DAI SDK предоставляет пару методов для запроса времени контента для заданного времени потока и времени потока для заданного времени контента . Используя эти методы преобразования, вы можете сохранить время содержимого закладки, а затем искать соответствующее время потока в новом экземпляре потока. Вот подход, включая ссылку на пример приложения, демонстрирующий рабочую реализацию закладок.
Сохранение закладок
Сохраните закладку, когда действие приостановлено.
- (void)viewWillAppear:(BOOL)animated {
...
self.bookmarkTime =
[self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
self.playerViewController.player.currentTime)];
}
Загрузка закладок
Загрузите закладку при повторном запросе потока. Это часть реализации интерфейса VideoStreamPlayer
.
- (void)streamManagerIsPlaybackReady:(IMAStreamManager *)streamManager {
...
if (self.bookmarkTime != 0) {
NSTimeInterval streamTime = [self.streamManager
streamTimeForContentTime:self.bookmarkTime];
[self.playerViewController.player
seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
}
}