Este guia mostra como implementar a inclusão de favoritos usando o SDK de DAI do IMA ao usar a Inserção de anúncios dinâmicos (DAI) para streams de vídeo on demand (VOD). Isso pressupõe uma implementação de DAI do IMA ativa, como a apresentada no Primeiros passos.
O que são favoritos?
Adicionar aos favoritos é a capacidade de salvar e depois voltar a um ponto específico no fluxo de conteúdo. Suponha que um usuário assista a cinco minutos de conteúdo, sai do stream de vídeo e depois retorna a ele. Os favoritos salvam posição do usuário na transmissão para que ela possa continuar de onde parado, proporcionando uma experiência perfeita ao espectador.
Como adicionar favoritos em segundo plano da DAI
Ao adicionar um stream da DAI aos favoritos, registre o código e o horário dele quando o usuário sair do vídeo. Quando o usuário retornar, solicite novamente o stream e procurar o tempo economizado. Como cada instância do evento a transmissão pode ter intervalos de anúncios de diferentes durações. Basta salvar a transmissão. não vai funcionar. O que você realmente deve fazer é continuar com a mesma tempo de conteúdo.
Métodos de conversão ao resgate
O SDK de DAI do IMA oferece dois métodos para solicitar o tempo do conteúdo. para um determinado tempo de transmissão e o tempo da transmissão para um determinado conteúdo tempo de resposta. Com esses métodos de conversão, é possível armazenar os favoritos tempo de conteúdo e depois o tempo da transmissão correspondente em a nova instância do fluxo. Aqui está a abordagem, incluindo um link a um app de exemplo que mostra uma implementação de adição de favoritos em funcionamento.
Salvando favoritos
Salvar um favorito quando o player de conteúdo estiver pausado.
onPause() {
var bookmarkTime = Math.floor(
streamManager.contentTimeForStreamTime(videoElement.currentTime));
}
Carregando favoritos
Carregue o favorito ao solicitar um stream novamente.
function loadUrl(url) {
hls.on(Hls.Events.MANIFEST_PARSED, () => {
var startTime = 0;
if (bookmarkTime) {
var startTime = streamManager.streamTimeForContentTime(bookmarkTime);
// Seeking on load triggers the onSeekEnd event, so treat this seek as
// if it's snapback. Without this, resuming at a bookmark kicks you
// back to the ad before the bookmark.
isSnapback = true;
}
hls.startLoad(startTime);
videoElement.addEventListener('loadedmetadata', () => { videoElement.play(); });
});
hls.loadSource(url);
hls.attachMedia(videoElement);
}
App de exemplo
Fazer o download do app de exemplo para ver uma implementação dos favoritos.