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

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

Издатели видеоконтента могут запретить пользователям перематывать рекламу в середине видео. Если пользователь перемотал рекламную паузу, вы можете вернуть его к ее началу, а после показа рекламы возобновить просмотр с нужного момента времени. Эта функция называется "возврат".

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

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

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

На диаграмме это выглядит так:

Ниже описано, как реализовать возврат с помощью IMA DAI SDK. Этот процесс также показан в расширенном примере.

Как запретить пользователям пропускать рекламные паузы

Проверьте, не пропустил ли пользователь рекламную паузу. Если да, верните его к ней. В 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. Если да, перенаправьте пользователя к этой точке в трансляции, поскольку рекламная пауза, которую он только что посмотрел, была результатом возврата:

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