Сохранение и загрузка закладок в рекламном потоке

Выберите платформу: HTML5 Android iOS tvOS Roku

В этом руководстве рассказывается, как реализовать закладки с помощью IMA DAI SDK при использовании динамической вставки объявлений в видео по запросу. В этом руководстве предполагается, что вы уже реализовали IMA DAI, как описано в статье Начало работы.

Что такое закладки?

Закладки – это возможность сохранить определенный момент в потоке, а затем вернуться к нему. Например, если пользователь вновь включает видео, не досмотренное до конца, Эта функция запоминает время паузы и начинает воспроизведение с этого момента, что делает просмотр намного удобнее.

Как работает закладка для динамической вставки объявлений

При добавлении в закладки трансляции с динамической вставкой объявлений необходимо записать идентификатор трансляции и время, когда пользователь покинул видео. Когда пользователь вернется, снова запросите поток и перейдите к сохраненному времени. Поскольку в каждом экземпляре запрашиваемого потока могут быть рекламные паузы разной продолжительности, просто сохранить время потока не получится. Вам нужно продолжить с того же момента в контенте.

Методы конверсии приходят на помощь

В IMA DAI SDK есть два метода, позволяющие запрашивать время контента для заданного времени трансляции и время трансляции для заданного времени контента. С помощью этих методов преобразования вы можете сохранить время контента, отмеченное закладкой, а затем перейти к соответствующему времени трансляции в новом экземпляре трансляции. Ниже описан этот подход и приведена ссылка на пример приложения с работающей реализацией закладок.

Сохранение закладок

Сохраните закладку, когда Activity приостановлен.

private double bookmarkTime;
@Override
public void onPause() {
    super.onPause();
    double streamTime = videoPlayer.getCurrentPosition() / 1000.0; // ms to s.
    bookmarkTime = streamManager.getContentTimeForStreamTime(streamTime);
}

Загрузка закладок

Загрузите закладку при повторном запросе трансляции. Это часть реализации интерфейса VideoStreamPlayer.

public void loadUrl(String url, List<HashMap<String, String>> subtitles) {
    // Set video player's stream URL and subtitles, and play the stream.
    ...

    // Bookmarking.
    if (bookmarkTime > 0) {
        double streamTime =
                streamManager.getStreamTimeForContentTime(bookmarkTime);
        videoPlayer.seek((long) (streamTime * 1000.0)); // s to ms.
    }
}

Пример приложения

Чтобы посмотреть, как реализованы закладки, скачайте пример приложения.