回溯

影片發布商可能會希望觀眾 尋找略過片中廣告使用者跳轉而略過廣告插播時 可以直接回到廣告插播的開始時間 廣告播放完畢後,就會前往尋找地點這個 功能稱為「回溯」

請參考下圖範例。觀眾正在觀看影片 並決定從 5 分鐘的標記跳轉至 15 分鐘的位置。 但在 10 分鐘標記處加入廣告插播時間點 然後才觀看內容:

如要顯示這個廣告插播時間點,請按照下列步驟操作:

  1. 檢查使用者是否跳轉到未觀看的廣告時段。 如果有,請將觀眾帶回廣告插播時間點
  2. 廣告插播時間點後,請回到原本的時間點。

圖表形式如下所示:

以下說明如何在 IMA DAI SDK 中實作此工作流程,如 AdvancedExample

避免跳轉,讓觀眾在不知情的情況下離開廣告插播時間

檢查使用者的跳轉廣告是否超過未觀看的廣告插播時間點。 如果有,請將觀眾帶回廣告插播時間點 在 Android SDK 中,使用 PlayerControl 物件偵測跳轉。 當使用者搜尋時,觸發 onSeek()SampleAdsWrapper 實作的 SampleHlsVideoPlayerCallback。 該方法 (如下所示) 會檢查使用者 跳轉時間。如果未播放,請移至廣告插播開頭 而非初始所需的搜尋點,然後儲存所需的跳轉點 點 (位於 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));
}

讓使用者回到原本的搜尋頁面

現在當您收到 onAdBreakEnded 事件時,請檢查 snapBackTime 資源。如果是的話,請將使用者帶往串流的時間點,因為廣告 剛才觀看的打斷影片是挽回的結果:

@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;
}