Plugin SSAI pour le SDK natif pour Android

Dans cette rubrique, vous découvrirez les changements importants apportés au plugin SSAI (Server-Side Ad Insertion) dans le SDK natif de Brightcove pour Android.

Aperçu

À partir de la version 6.18.0 du SDK natif pour Android, le plugin SSAI a subi d'importantes modifications qui améliorent la lecture et la recherche, en particulier dans les lecteurs en pause.

Auparavant, lorsqu'un utilisateur cherchait à avancer et croisait une publicité, les contrôles publicitaires remplaçaient immédiatement les contrôles vidéo. Cela ne permettait pas à l'utilisateur de continuer à chercher. Le lecteur conserverait également le contenu vidéo au lieu de le remplacer par un contenu publicitaire.

Désormais, les utilisateurs peuvent chercher en avant et en arrière sans que les publicités ne soient diffusées jusqu'à ce que la vidéo soit en cours de lecture et que l'utilisateur ait croisé une publicité lors de sa dernière recherche.

Cas d'utilisation

Considérons le cas d'utilisation suivant :

  1. L'utilisateur charge une vidéo avec une ou plusieurs publicités mid-roll dans le lecteur et démarre la lecture de la vidéo.
  2. Avant une publicité mid-roll, l'utilisateur interrompt la lecture.
  3. Pendant que le lecteur est en pause, l'utilisateur cherche le marqueur de publicité mid-roll.
  4. Alors que le lecteur est toujours en pause, l'utilisateur cherche à revenir sur le marqueur de publicité mid-roll, dans le contenu qu'il vient de regarder.
  5. Après la recherche, les commandes du lecteur sont à la disposition de l'utilisateur. Lorsque l'utilisateur appuie sur Play, le contenu est lu comme prévu.
  6. Lorsque la lecture atteint le marqueur de publicité midroll, la publicité est diffusée et les commandes publicitaires s'affichent.
  7. Une fois la publicité midroll terminée, le lecteur effectue l'action de recherche jusqu'à la cible de recherche, où le contenu reprend la lecture, avec les commandes du lecteur.

Exigences

Les exigences suivantes sont nécessaires pour cette fonctionnalité :

  • SDK natif Brightcove pour Android 6.18.0 ou plus récent

Changements de comportement du plugin

Les classes suivantes ont un nouveau comportement :

SSAIComponent classe

Cette classe transmet désormais l' BaseVideoView objet à la TimelineManager classe lorsqu'une référence à celui-ci est créée.

Il a supprimé la transmission des références du contrôleur de lecture vidéo et du ticker au SeekManager moment de sa création et transmet à la place l'émetteur d'événements. Il définit également l'écouteur de recherche de l'objet du gestionnaire de chronologie vers cette nouvelle SeekManager référence.

Cela a également empêché l' SeekManager objet d'être transmis en tant qu'observateur à la Ticker classe.

LastAdSeekStrategy classe

Cette classe est maintenant publique.

NoAdSeekStrategy classe

Cette classe est maintenant publique.

SeekManager classe

Cette classe ne déclenche plus la lecture des publicités. Cette fonctionnalité a été déplacée TimelineManager là où elle a le plus de sens.

Cette classe écoutait auparavant les SEEK_TO événements et informait tous les auditeurs abonnés à cette classe. Avec cette action, il a dépassé la nouvelle position temporelle absolue et a également émis un nouvel SEEK_TO événement incluant la position absolue et la position relative. Désormais, SeekManager il n'émet plus de nouvel événement de recherche, mais informe toujours tous les auditeurs du premier événement de recherche.

Cette classe n'implémente plus le TickerObserver et SeekTask.Seekable classes et ne gère pas les événements générés par ces classes.

Cette classe ne gère plus les Skip Ad événements.

La signature du constructeur est passée de

public SeekManager(VideoPlaybackController, Timeline, Ticker)

à

public SeekManager(EventEmitter, Timeline)

TimelineManager classe

Cette classe gère désormais la lecture et le saut des publicités. Il est abonné à la SeekManager classe pour écouter les événements de recherche. Lorsqu'un événement de recherche est détecté, cette classe vérifie si une annonce a été franchie. Si c'est le cas, la publicité est diffusée. Si ce n'est pas le cas, il repositionne la tête de lecture dans le contenu vidéo et met à jour les positions absolues et relatives.

Les publicités sont diffusées pendant la lecture de la vidéo. Si la vidéo est mise en pause, elle ne diffusera aucune publicité croisée par des événements de recherche. Cela permet de soutenir de nombreux événements de recherche. Si la vidéo est en cours de lecture et qu'une publicité est croisée, celle-ci est diffusée immédiatement.

Lorsqu'une annonce est supprimée alors que la vidéo est en pause, la position de la TimelineManager tête de lecture reprend à la position où elle se trouvait avant la diffusion de l'annonce.

La lecture TimelineManager reprend à la position précédente lorsqu'un événement d'omission d'annonce est détecté.

La classe TimelineManager s'étend désormais AbstractComponent.

Pour créer un TimelineManager objet, vous devez transmettre une BaseVideoView instance en même temps qu'une Timeline instance.

Modifications de l'API

Les classes suivantes ont fait l'objet de modifications de l'API :

SeekTask classe

Cette classe a été supprimée car ses fonctionnalités principales ont été intégrées à la TimelineManager classe, là où cela a plus de sens.

SeekManager classe

Le constructeur SeekManager(VideoPlaybackController videoPlaybackController, Timeline timeline, Ticker ticker) a été supprimé car il n'a plus besoin du VideoPlaybackController et du Ticker. Au lieu de cela, il reçoit désormais le EventEmitter et le Timeline comme suit :

SeekManager(EventEmitter eventEmitter, Timeline timeline)

TimelineManager classe

Le constructeur TimelineManager(@NonNull Timeline mTimeline) a été modifié comme suit :

TimelineManager(@NonNull BaseVideoView mBaseVideoView, @NonNull Timeline mTimeline)