En tant qu'éditeur de vidéos, vous voulez peut-être empêcher vos spectateurs après avoir regardé vos annonces mid-roll. Lorsqu'un utilisateur cherche au-delà d'une coupure publicitaire, vous pouvez les rediriger au début de la coupure publicitaire, vers l'emplacement recherché une fois la coupure publicitaire terminée. Ce est appelée « snapback ».
À titre d'exemple, consultez le schéma ci-dessous. votre spectateur regarde une vidéo ; et décide de passer de 5 à 15 minutes. En revanche, il y a une coupure publicitaire au bout de 10 minutes avant de pouvoir regarder le contenu après:
Pour diffuser cette coupure publicitaire, procédez comme suit:
- Vérifier si l'utilisateur a lancé une recherche qui dépasse une coupure publicitaire non visionnée Si c'est le cas, redirigez-les vers la coupure publicitaire.
- Une fois la coupure publicitaire terminée, faites revenir l'utilisateur à sa recherche initiale.
Sous forme de diagramme, cela se présente comme suit:
Voici comment implémenter ce processus dans le SDK IMA DAI AdvancedExample.
Empêcher une recherche de laisser une coupure publicitaire sans visionnage
Vérifier si l'utilisateur a effectué une recherche après une coupure publicitaire non visionnée
Si c'est le cas, redirigez-les
vers la coupure publicitaire.
Dans le SDK Android, utilisez l'objet PlayerControl
pour détecter la recherche.
Lorsque l'utilisateur effectue une recherche, déclenchez la méthode onSeek()
de
SampleHlsVideoPlayerCallback
implémenté par SampleAdsWrapper
.
Cette méthode (présentée ci-dessous) vérifie le point de repère avant l'appel
rechercher une heure. Si elle n'est pas lue, rechercher le début de la coupure publicitaire
au lieu du point de recherche initial souhaité et enregistrer cette recherche
point dans snapBackTime
.
@Override
public void onSeek(int timeMillis) {
double timeToSeek = timeMillis;
if (streamManager != null) {
CuePoint cuePoint =
streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
if (cuePoint != null && !cuePoint.isPlayed()) {
snapBackTime = timeToSeek / 1000.0; // Update snapback time.
// Missed cue point, so snap back to the beginning of cue point.
timeToSeek = cuePoint.getStartTime() * 1000;
videoPlayer.seek(Math.round(timeToSeek));
videoPlayer.setCanSeek(false);
return;
}
}
videoPlayer.seek(Math.round(timeToSeek));
}
Renvoyer l'utilisateur à sa recherche initiale
Lorsque vous recevez un événement onAdBreakEnded
, vérifiez si snapBackTime
est définie. Si c'est le cas, dirigez l'utilisateur vers ce point du flux, car l'annonce
une pause qu'ils viennent de regarder est le résultat d'un Snapback:
@Override
public void onAdBreakEnded() {
// Re-enable player controls.
videoPlayer.setCanSeek(true);
videoPlayer.enableControls(true);
if (snapBackTime > 0) {
videoPlayer.seek(Math.round(snapBackTime * 1000));
}
snapBackTime = 0;
}