回溯

影片發布商可能會想防止觀眾看到 越過片中廣告使用者跳轉超過廣告插播時間點時,您可以將他們帶回該廣告插播的開頭,然後在廣告插播結束後將其傳回搜尋位置。此功能稱為「回歸」。

請參考下圖範例。觀眾正在觀看影片,然後選擇從 5 分鐘的標記開始跳轉至 15 分鐘。然而,在 10 分鐘標記處出現一段廣告插播時間點,表示您希望使用者在看完內容前看完廣告:

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

  1. 檢查使用者執行的跳轉是否超過未觀看的廣告插播時間點。如果可以,請將使用者重新回到廣告插播時間點。
  2. 廣告插播結束後,請返回原本的跳轉。

以圖表形式呈現,如下所示:

在 HTML5 IMA SDK 中實作此工作流程的方式,如進階範例所示。

防止使用者在未觀看的廣告插播時間點暫停播放

檢查使用者執行的時間是否超過未觀看的廣告插播時間點,如果有的話,就可以回到廣告插播時間點。在 HTML5 SDK 中,在內容播放器的 seeked 事件上設定事件監聽器,以觸發 onSeekEnd()。此方法 (如下所示) 會檢查使用者搜尋時間之前的提示點。如果未播放,請跳轉至該廣告插播時間點 (而不是其初始所需的搜尋點) 開始,然後將所需的跳轉點儲存在 snapForwardTime 中。

function onSeekEnd() {
  if (isLiveStream) { return; }
  if (isSnapback) {
    isSnapback = false;
    return;
  }
  var currentTime = videoElement.currentTime;
  var previousCuePoint =
      streamManager.previousCuePointForStreamTime(currentTime);
  if (previousCuePoint && !previousCuePoint.played) {
    isSnapback = true;
    snapForwardTime = currentTime;
    videoElement.currentTime = previousCuePoint.start;
}

引導使用者回到原本的搜尋點

現在當您收到 AD_BREAK_ENDED 事件時,請檢查是否已設定 snapForwardTime。如果是的話,請將使用者引導至串流中的該時間點,因為他們剛看過的廣告插播就是回傳結果:

function onAdBreakEnded(e) {
  videoElement.controls = true;
  clickElement.style.display = 'none';
  adUiDiv.style.display = 'none';
  if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
    videoElement.currentTime = snapForwardTime;
    snapForwardTime = null;
  }
}