Voltar para um intervalo de anúncio ignorado

Selecione a plataforma: HTML5 Android iOS tvOS Roku

Como editor de vídeos, talvez você queira impedir que os espectadores pulem os anúncios intermediários. Quando um usuário pula um intervalo comercial, você pode levá-lo de volta ao início desse intervalo de anúncio e, em seguida, retornar ao local de busca após a conclusão do intervalo de anúncio. Esse recurso é chamado de "ajuste".

Confira um exemplo no diagrama abaixo. O espectador está assistindo um vídeo e decide buscar do minuto 5 ao 15. No entanto, há um intervalo de anúncio no minuto 10 que você quer que ele assista antes de poder assistir o conteúdo depois dele:

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

  1. Verifique se o usuário fez uma busca que pulou um intervalo de anúncio não assistido e, em caso afirmativo, leve-o de volta ao intervalo de anúncio.
  2. Depois que o intervalo de anúncio for concluído, retorne à busca original.

No diagrama, isso fica assim:

Confira como implementar o ajuste usando o SDK IMA DAI, conforme demonstrado no exemplo avançado.

Impedir que uma busca deixe um intervalo de anúncio não assistido

Verifique se o usuário fez uma busca que pulou um intervalo de anúncio não assistido e, em caso afirmativo, leve-o de volta ao intervalo de anúncio. No SDK 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 tempo de busca do usuário. Se ele não for reproduzido, busque o início desse intervalo de anúncio em vez do ponto de busca desejado inicial e salve esse ponto de busca desejado 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;
}

Retornar o usuário à busca original

Agora, quando você receber um evento AD_BREAK_ENDED, verifique se snapForwardTime está definido. Em caso afirmativo, leve o usuário a esse ponto no stream, porque o intervalo comercial que ele acabou de assistir foi o 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;
  }
}