Snapback

Se você é editor de vídeo, talvez queira impedir que os espectadores escondam seus anúncios intermediários. Quando um usuário passa por um intervalo de anúncio, é possível voltar ao início dele e retornar ao local de busca depois que o intervalo for concluído. Esse recurso é chamado de "snapback".

Como exemplo, veja o diagrama abaixo. Seu espectador está assistindo um vídeo e decide passar da marca de 5 a 15 minutos. No entanto, há um intervalo de anúncio na marca de 10 minutos que você quer que eles assistam antes que possam assistir ao conteúdo depois dele:

Para mostrar esse intervalo de anúncio, siga estas etapas:

  1. Confira se o usuário fez uma busca que ultrapassou um intervalo de anúncio não assistido e, em caso afirmativo, retorne a ele.
  2. Quando o intervalo de anúncio terminar, retorne à busca original.

Em forma de diagrama, o código fica assim:

Veja como implementar esse fluxo de trabalho no SDK do IMA para HTML5, conforme feito no exemplo avançado.

Evitar uma busca de deixar um intervalo de anúncio sem visualização

Confira se o usuário executou uma busca que ultrapassou um intervalo de anúncio não assistido. Caso tenha feito isso, leve-o de volta a ele. No SDK do HTML5, defina um listener de eventos no evento seeked do player de conteúdo para acionar onSeekEnd(). Esse método (apresentado abaixo) verifica o ponto de inserção antes do momento de busca do usuário. Se ele não for reproduzido, vá até o início desse intervalo de anúncio em vez do ponto de busca inicial desejado e salve esse ponto de busca em 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;
}

Levar o usuário de volta à busca original

Agora, ao receber um evento AD_BREAK_ENDED, verifique se snapForwardTime está definido. Nesse caso, leve o usuário a esse ponto da transmissão, porque o intervalo de anúncio que ele acabou de assistir foi resultado do ajuste:

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