Вернуться к пропущенной рекламной паузе

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

Как видеоредактор, вы можете захотеть запретить зрителям перематывать видео после вставки рекламы. Когда пользователь перематывает видео после рекламной паузы, вы можете вернуть его к началу этой паузы, а затем снова вернуть к месту перемотки после её завершения. Эта функция называется «возврат к исходному положению».

В качестве примера рассмотрим диаграмму ниже. Зритель смотрит видео и решает перемотать его с 5-й минуты на 15-ю. Однако на 10-й минуте есть рекламная пауза, которую вы хотите, чтобы он посмотрел перед тем, как перейти к следующему контенту:

Для отображения этой рекламной паузы выполните следующие действия:

  1. Проверьте, не перескочил ли пользователь на неотсмотренную рекламную паузу, и если да, верните его к этой рекламной паузе.
  2. После завершения рекламной паузы верните пользователей к исходному месту поиска.

В виде схемы это выглядит так:

Вот как реализовать функцию Snapback с помощью SDK IMA DAI, как показано в расширенном примере .

Предотвратите ситуацию, когда поиск не оставляет рекламную паузу без просмотра.

Проверьте, не продвинулся ли пользователь в поиске за пределы непросмотренной рекламной паузы, и если да, верните его к рекламной паузе. В HTML5 SDK установите обработчик события seeked в проигрывателе контента, чтобы он запускал onSeekEnd() . Этот метод (представленный ниже) проверяет точку воспроизведения перед временем поиска пользователя. Если она не воспроизведена, переместитесь к началу этой рекламной паузы вместо желаемой начальной точки поиска и сохраните эту желаемую точку поиска в snapForwardTime .

function onSeekEnd() {
  if (isLiveStream) { return; }
  if (isSnapback) {
    isSnapback = false;
    return;
  }
  var currentTime = videoElement.currentTime;
  var previousCuePoint =
      streamManager.previousCuePointForStreamTime(currentTime);
  if (previousCuePoint && !previousCuePoint.played) {
    isSnapback = true;
    snapForwardTime = currentTime;
    videoElement.currentTime = previousCuePoint.start;
}

Вернуть пользователя к исходному положению поиска.

Теперь, когда вы получаете событие AD_BREAK_ENDED , проверьте, установлен ли параметр snapForwardTime . Если да, переведите пользователя к этому моменту в потоке, поскольку только что просмотренная им рекламная пауза была результатом возврата к исходному состоянию (snapback):

function onAdBreakEnded(e) {
  videoElement.controls = true;
  clickElement.style.display = 'none';
  adUiDiv.style.display = 'none';
  if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
    videoElement.currentTime = snapForwardTime;
    snapForwardTime = null;
  }
}