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

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

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

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

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

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

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

Вот как реализовать Snappack с использованием SDK IMA DAI, как показано в нашем расширенном примере .

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

Проверьте, не совершил ли пользователь перемотку вперед, которая прошла мимо непросмотренной рекламной паузы, и если да, верните его к этой рекламной паузе. В расширенном примере для Roku перемотка осуществляется нажатием кнопок на пульте дистанционного управления — каждый раз, когда пользователь нажимает кнопку «Вперед», он перескакивает вперед по потоку на заданное количество секунд. Тот же метод, который обрабатывает этот скачок, также проверяет, проходит ли перемотка мимо рекламной паузы или попадает в нее, и если да, то отправляет пользователя к началу этой рекламной паузы.

Function handleFastForward(player as Object, streamManager as Object, updatedTime As Integer)
  previousAd = streamManager.getPreviousCuePoint(updatedTime)
  If previousAd = Invalid or previousAd.hasPlayed
    player.seek(updatedTime * 1000)
  Else If previousAd.start > player.currentTime
    player.isSnapback = True
    player.timeAfterSnapback = updatedTime
    player.seek(previousAd.start * 1000 + 1000)
  End If
End Function

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

В обработчике adBreakEnded проверьте, был ли воспроизведен предыдущий рекламный блок в результате возврата к исходному состоянию. Если да, верните пользователя на то место, куда он пытался перейти изначально (при условии, что это не середина только что воспроизведенного рекламного блока):

player.adBreakEnded = Function(adBreakInfo as Object)
  If m.isSnapback
    m.seek(m.timeAfterSnapback * 1000)
    m.isSnapback = False
  End If
End Function