В этом руководстве показано, как реализовать функцию добавления закладок с помощью SDK IMA DAI при использовании динамической вставки рекламы (DAI) для видеопотоков по запросу (VOD). Предполагается наличие работающей реализации IMA DAI, например, той, что представлена в разделе «Начало работы» .
Что такое закладки?
Закладки — это возможность сохранить и затем вернуться к определенному моменту в потоке контента. Допустим, пользователь смотрит пять минут контента, выходит из видеопотока, а затем возвращается к нему. Закладки сохраняют позицию пользователя в потоке, чтобы поток мог продолжить просмотр с того места, где он остановился, обеспечивая зрителю бесперебойное взаимодействие.
Функция закладок DAI работает «под капотом».
При добавлении потока DAI в закладки необходимо записать идентификатор потока и время, когда пользователь покидает видео. Когда пользователь возвращается, повторно запросите поток и перейдите к сохраненному времени. Поскольку каждый экземпляр запрошенного потока может содержать рекламные паузы разной продолжительности, простое сохранение времени потока не сработает. Вам нужно продолжить просмотр с того же временного интервала .
На помощь приходят методы переоборудования.
SDK IMA DAI предоставляет пару методов для запроса времени содержимого для заданного времени потока и времени потока для заданного времени содержимого . Используя эти методы преобразования, вы можете сохранить закладку времени содержимого , а затем перейти к соответствующему времени потока в новом экземпляре потока. Вот подход, включая ссылку на пример приложения, демонстрирующий работающую реализацию закладок.
Сохранение закладок
Сохранять закладку, когда активность приостановлена.
Saves the current time as a bookmark in the current video.
Function saveBookmarkTime(player as Object, streamManager as Object) as Void
m.videos[player.video.index].bookmarkTime =
streamManager.getContentTime(player.currentTime * 1000)
End Function
Загрузка закладок
Закладка загружается при повторном запросе потока. Это часть реализации интерфейса VideoStreamPlayer .
player.loadUrl = Function(streamInfo as Object)
...
If m.video.bookmarkTime > 0
streamTime = m.streamManager.getStreamTime(m.video.bookmarkTime)
m.videoPlayer.seek(streamTime)
End If
End Function