Como editor de vídeo, talvez você queira impedir que os espectadores avancem os anúncios intermediários. Quando um usuário pula um intervalo comercial, você pode levá-lo de volta ao início desse intervalo e, em seguida, retornar ao ponto do vídeo buscado pelo usuário após a conclusão do intervalo. Esse recurso é chamado de "snapback".
Por exemplo, confira o diagrama abaixo. O espectador está assistindo um vídeo e decide buscar do minuto 5 ao minuto 15. No entanto, há um intervalo de anúncio aos 10 minutos que você quer que eles assistam antes de poderem assistir o conteúdo depois disso:
Para mostrar esse intervalo, siga estas etapas:
- Verifique se o usuário fez uma busca que pulou um intervalo de anúncio não assistido e, em caso afirmativo, retorne ao intervalo de anúncio.
- Depois que o intervalo comercial terminar, retorne ao ponto original.
Em um diagrama, isso fica assim:
Confira como implementar o retorno rápido usando o SDK DAI do IMA, conforme demonstrado no Exemplo avançado.
Evitar que uma busca deixe um intervalo de anúncio sem ser assistido
Verifique se o usuário fez uma busca que passou por um intervalo de anúncio não assistido e, em caso afirmativo, retorne 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
marcação antes do tempo de busca do usuário. Se não tiver sido reproduzido, procure o início do intervalo
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;
}
Voltar o usuário para a posição original
Agora, quando você receber um evento AD_BREAK_ENDED
, verifique se snapForwardTime
está definido. Se for o caso, leve o usuário até esse ponto no stream, porque o intervalo
de anúncio que ele acabou de assistir foi o resultado do 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;
}
}