適用於Android的Native SDK的SSAI插件

在本主題中,您將了解適用於 Android 的 Brightcove Native SDK 中服務器端廣告插入 (SSAI) 插件的重要變化。

概覽

從適用於 Android 的 Native SDK 版本 6.18.0 開始,SSAI 插件發生了一些重要變化,這些變化改進了播放和搜索行為,尤其是在暫停的播放器中。

以前,當用戶向前搜索並越過廣告時,廣告控件會立即取代視頻控件。這不允許用戶繼續尋找。播放器還會保留視頻內容,而不是將其替換為廣告內容。

現在,用戶可以在不播放廣告的情況下向前和向後搜索,直到視頻正在播放並且用戶通過最後一次搜索越過了廣告。

用例

考慮以下用例:

  1. 用戶將帶有一個或多個中貼片廣告的視頻加載到播放器中並開始播放視頻。
  2. 在插播廣告之前,用戶暫停播放。
  3. 當播放器暫停時,用戶會在中貼片廣告標記中搜索。
  4. 當播放器仍處於暫停狀態時,用戶會通過中貼片廣告標記返回到剛剛觀看的內容。
  5. 搜索後,播放器控件可供用戶使用。當用戶按下 Play時,內容會按預期播放。
  6. 當播放到達插播廣告標記時,廣告將播放,並顯示廣告控件。
  7. 插播廣告完成後,播放器完成對搜索目標的搜索操作,內容在播放器控制下恢復播放。

需求

此功能需要滿足以下要求:

  • 適用於 Android 6.18.0 或更新版本的 Brightcove Native SDK

插件行為變化

以下類具有新行為:

SSAIComponent班級

這個類現在通過BaseVideoView反對TimelineManager創建對此的引用時的類。

它刪除了將視頻播放控制器和代碼的引用傳遞給SeekManager當它被創建時,它會傳遞事件發射器。它還將時間線管理器對象的搜索偵聽器設置為這個新的SeekManager參考。

它還刪除了SeekManager對像被作為觀察者傳遞給Ticker班級。

LastAdSeekStrategy班級

這個類現在是公開的。

NoAdSeekStrategy班級

這個類現在是公開的。

SeekManager班級

該類不再觸發廣告播放。該功能已移至TimelineManager哪裡更有意義。

這個類以前聽過SEEK_TO事件並通知所有訂閱該類的聽眾。隨著那個動作,它通過了新的絕對時間位置,也發出了一個新的SEEK_TO事件包括絕對位置和相對位置。現在,SeekManager不再發出新的搜索事件,但仍會通知所有偵聽器有關第一個搜索事件的信息。

這個類不再實現TickerObserverSeekTask.Seekable類並且不處理這些類生成的事件。

這個類不再處理Skip Ad事件。

構造函數簽名已從

public SeekManager(VideoPlaybackController, Timeline, Ticker)

變更為

public SeekManager(EventEmitter, Timeline)

TimelineManager班級

該類現在處理廣告的播放和跳過操作。它訂閱了SeekManager監聽尋找事件的類。檢測到搜索事件後,此類會檢查是否越過廣告。如果是這樣,它就會播放廣告。如果不是,它會重新定位視頻內容中的播放頭並更新絕對和相對位置。

一旦播放視頻,就會播放廣告。如果視頻暫停,它將不會播放任何被搜索事件交叉的廣告。這提供了支持許多搜索事件的可用性。如果正在播放視頻並且交叉了廣告,則立即播放該廣告。

在視頻暫停時越過廣告時,TimelineManager將在播放廣告之前的位置恢復播放頭位置。

TimelineManager當檢測到跳過廣告事件時,從之前的位置恢復播放。

TimelineManager 類現在擴展AbstractComponent .

為了創造一個TimelineManager對象,你需要傳遞一個BaseVideoView實例連同Timeline實例。

API 變更

以下類具有 API 更改:

SeekTask班級

這個類被刪除是因為它的主要功能被集成到TimelineManager類更有意義。

SeekManager班級

構造器SeekManager(VideoPlaybackController videoPlaybackController, Timeline timeline, Ticker ticker)被刪除,因為它不再需要VideoPlaybackControllerTicker .相反,它現在收到EventEmitterTimeline如下:

SeekManager(EventEmitter eventEmitter, Timeline timeline)

TimelineManager班級

構造器TimelineManager(@NonNull Timeline mTimeline)更改為以下內容:

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