Как издатель видео, вы, возможно, захотите, чтобы ваши зрители не просматривали вашу рекламу в середине ролика. Когда пользователь выполняет поиск после рекламной паузы, вы можете вернуть его к началу рекламной паузы, а затем вернуть его в место поиска после завершения рекламной паузы. Эта функция называется «мгновенный возврат».
В качестве примера смотрите диаграмму ниже. Ваш зритель смотрит видео и решает перейти от 5-минутной отметки к 15-минутной отметке. Однако на 10-минутной отметке есть рекламная пауза, которую вы хотите, чтобы они посмотрели, прежде чем они смогут просмотреть контент после нее:
Чтобы показать эту рекламную паузу, выполните следующие действия:
- Проверьте, выполнил ли пользователь поиск, который перешел за непросмотренную рекламную паузу, и если да, верните его обратно к рекламной паузе.
- После завершения рекламной паузы верните их в исходное положение.
В виде диаграммы это выглядит так:
Ниже описано, как реализовать этот рабочий процесс в HTML5 IMA 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
. Если да, переведите пользователя к этой точке потока, потому что рекламная пауза, которую он только что посмотрел, была результатом 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;
}
}