Überblick
Ab der Version 6.18.0 des Native SDK für Android gibt es einige wichtige Änderungen am SSAI-Plugin, die die Wiedergabe und das Suchverhalten verbessern, insbesondere bei pausierten Playern.
Wenn ein Nutzer früher vorwärts suchte und eine Anzeige überquerte, ersetzte die Anzeigensteuerung sofort die Videosteuerung. Dadurch war es dem Benutzer nicht möglich, weiter zu suchen. Der Player würde auch den Videoinhalt beibehalten, anstatt ihn durch den Werbeinhalt zu ersetzen.
Jetzt können Nutzer vorwärts und rückwärts suchen, ohne dass die Werbung abgespielt wird, bis das Video abgespielt wird und der Nutzer mit dem letzten Suchlauf eine Werbung überquert hat.
Anwendungsfall
Betrachten Sie den folgenden Anwendungsfall:
- Der Nutzer lädt ein Video mit einer oder mehreren Mid-Roll-Anzeigen in den Player und startet die Videowiedergabe.
- Vor einer Mid-Roll-Anzeige pausiert der Nutzer die Wiedergabe.
- Während der Player pausiert, sucht der Nutzer nach dem Mid-Roll-Ad-Marker.
- Während der Player noch pausiert, sucht der Nutzer über die Mid-Roll-Anzeigemarkierung zurück zum gerade gesehenen Inhalt.
- Nach dem Suchlauf stehen dem Benutzer die Steuerelemente des Players zur Verfügung. Wenn der Benutzer auf Play drückt, wird der Inhalt wie erwartet abgespielt.
- Wenn die Wiedergabe die Midroll-Anzeigenmarkierung erreicht, wird die Anzeige abgespielt und die Anzeigensteuerung angezeigt.
- Nach Beendigung der Midroll-Anzeige führt der Player die Suchaktion zum Suchziel aus, wo die Wiedergabe des Inhalts mit den Playerkontrollen fortgesetzt wird.
Voraussetzungen
Für diese Funktion werden die folgenden Anforderungen benötigt:
- Natives Brightcove-SDK für Android 6.18.0 oder neuer
Plugin-Verhaltensänderungen
Die folgenden Klassen haben ein neues Verhalten:
SSAIComponent
Klasse
Diese Klasse übergibt das BaseVideoView
Objekt nun an die TimelineManager
Klasse, wenn eine Referenz darauf erstellt wird.
Es wurde die Übergabe der Referenzen für den Videowiedergabecontroller und des Tickers an den SeekManager
Zeitpunkt der Erstellung entfernt und stattdessen den Event-Emitter übergeben. Außerdem wird der Seek-Listener vom Timeline-Manager-Objekt auf diese neue SeekManager
Referenz gesetzt.
Es hat auch verhindert, dass das SeekManager
Objekt als Beobachter an die Ticker
Klasse übergeben wurde.
LastAdSeekStrategy
Klasse
Diese Klasse ist jetzt öffentlich.
NoAdSeekStrategy
Klasse
Diese Klasse ist jetzt öffentlich.
SeekManager
Klasse
Diese Klasse löst nicht mehr das Abspielen von Anzeigen aus. Diese Funktion wurde dorthin verschoben, TimelineManager
wo sie sinnvoller ist.
Diese Klasse hat zuvor auf SEEK_TO
Ereignisse gehört und alle Zuhörer, die diesen Kurs abonniert haben, benachrichtigt. Mit dieser Aktion wurde die neue absolute Zeitposition überschritten und außerdem ein neues SEEK_TO
Ereignis ausgegeben, das die absolute Position und die relative Position enthielt. Gibt jetzt SeekManager
kein neues Suchereignis mehr aus, benachrichtigt aber trotzdem alle Hörer über das erste Suchereignis.
Diese Klasse implementiert die nicht mehr TickerObserver
Und SeekTask.Seekable
Klassen und verarbeitet nicht die Ereignisse, die diese Klassen generieren.
Diese Klasse verarbeitet keine Skip Ad
Ereignisse mehr.
Die Signatur des Konstruktors hat sich von
public SeekManager(VideoPlaybackController, Timeline, Ticker)
zu
public SeekManager(EventEmitter, Timeline)
TimelineManager
Klasse
Diese Klasse steuert nun die Wiedergabe und das Überspringen von Anzeigen. Es ist abonniert, SeekManager
um nach Veranstaltungen zu suchen. Sobald ein Suchereignis erkannt wird, prüft diese Klasse, ob eine Anzeige überschritten wurde. Wenn ja, wird die Anzeige abgespielt. Wenn nicht, wird der Abspielkopf im Videoinhalt neu positioniert und die absolute und relative Position aktualisiert.
Die Werbung wird abgespielt, sobald das Video abgespielt wird. Wenn das Video angehalten wird, werden keine Anzeigen abgespielt, die von Suchereignissen durchkreuzt werden. Dies bietet die Möglichkeit, viele Suchaktionen zu unterstützen. Wenn das Video abgespielt wird und eine Anzeige überquert wird, wird die Anzeige sofort abgespielt.
Wenn eine Anzeige angekreuzt wird, während das Video angehalten ist, TimelineManager
wird die Abspielposition an der Position vor dem Abspielen der Anzeige wieder aufgenommen.
Der TimelineManager
setzt die Wiedergabe an der vorherigen Position fort, wenn ein Ereignis zum Überspringen der Anzeige erkannt wird.
Die TimelineManager-Klasse wird jetzt erweitert AbstractComponent
.
Um ein TimelineManager
Objekt zu erstellen, müssen Sie eine BaseVideoView
Instanz zusammen mit einer Timeline
Instanz übergeben.
API-Änderungen
Bei den folgenden Klassen wurden API-Änderungen vorgenommen:
SeekTask
Klasse
Diese Klasse wurde gelöscht, da ihre Hauptfunktionalität in die TimelineManager
Klasse integriert wurde, wo sie sinnvoller ist.
SeekManager
Klasse
Der Konstruktor SeekManager(VideoPlaybackController videoPlaybackController, Timeline timeline, Ticker ticker)
wurde gelöscht, da er die VideoPlaybackController
und die nicht mehr benötigt Ticker
. Stattdessen erhält es jetzt das EventEmitter
und das Timeline
wie folgt:
SeekManager(EventEmitter eventEmitter, Timeline timeline)
TimelineManager
Klasse
Der Konstruktor TimelineManager(@NonNull Timeline mTimeline)
wurde wie folgt geändert:
TimelineManager(@NonNull BaseVideoView mBaseVideoView, @NonNull Timeline mTimeline)